merhaba arkadaşlar.
Başka programlarda kullanmak için klavyeye tuş bastırmam gerekiyor.
Mesela şu harfleri kullanmak istiyorum:
Á á É é
Í í Ñ ñ Ó ó
Bunların chr kodlarını falan biliyorum.
Ben win butonu+1 e bastığımda klavyeden á tuşu basılmış etkisi verecek. Ve bulunduğum textarea vs ye yazacak.
kod şu şekilde
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
protected
procedure hotykey(var msg:TMessage); message WM_HOTKEY;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,id1,id2,id3:integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:=false;
id1:=GlobalAddAtom('hotkey');
RegisterHotKey(handle,id1,MOD_WIN,49);
id2:=GlobalAddAtom('hotkey1');
RegisterHotKey(handle,id2,MOD_WIN,50);
id3:=GlobalAddAtom('hotkey2');
RegisterHotKey(handle,id3,mod_WIN,51);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(handle,id1);
UnRegisterHotKey(handle,id2);
UnRegisterHotKey(handle,id3);
end;
procedure TForm1.hotykey(var msg:TMessage);
begin
if (msg.LParamLo=MOD_WIN) and (msg.LParamHi=49) then
begin
keybd_event(VkKeyScanA('á'), 1, 0, 0); //normal karakterlerde problem olmuyor. mesela 'a' yı yazıyor.
end;
if (msg.LParamLo=MOD_WIN) and (msg.LParamHi=50) then
begin
keybd_event(VkKeyScanA('é'), 1, 0, 0);
end;
if (msg.LParamLo=MOD_WIN) and (msg.LParamHi=51) then
begin
keybd_event(VkKeyScanA('ó'), 1, 0, 0);
end;
end;
end.
Bunlar ispanyolca karakterler. İnternette ispanyolca sitelerinde artık kopyala yapıştır yapmaktan bıktım karakterleri.
win+1 e basacam yazı alanına "á" yı yazacak. Ama karakter setini bu kodlarda tanımıyor herhalde. Unicode gibi birşey yapmak gerekli.
Yardımlarınız için teşekkürler.
klavyeye tuş bastırma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: klavyeye tuş bastırma
yapmak istediğimi şu şekilde yaptım..
Clipboard.AsText:='é';
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0);
keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);
Clipboard.Clear;
Clipboard'a kopyalıyorum CTRL+V ye bastırıyorum, ve clipboard'u temizliyorum.
Tabi yinede ilk sorunun cevabını bilen varsa paylaşabilir. Bilgisayarın dilinde olmayan karakterleri basmıyor ilkinde.
İyi çalışmalar
Clipboard.AsText:='é';
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), 0, 0);
keybd_event(Ord('V'), MapVirtualKey(Ord('V'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);
Clipboard.Clear;
Clipboard'a kopyalıyorum CTRL+V ye bastırıyorum, ve clipboard'u temizliyorum.

Tabi yinede ilk sorunun cevabını bilen varsa paylaşabilir. Bilgisayarın dilinde olmayan karakterleri basmıyor ilkinde.
İyi çalışmalar
Re: klavyeye tuş bastırma
ya vatandaş bu işten önce clipboarda önemli bir şey aldı ise?
Bir kelimenin anlamını öğretsen bile yeter..



Re: klavyeye tuş bastırma
Evet o dediğini bizzat yaşadım. Onun için birinci yöntemi çalıştırmak gerekecek.. 

Re: klavyeye tuş bastırma
İstediğiniz karakterleri yazdırması lazım...kullandığınız metotlarda bir sıkıntı olabilir Tuş gönderme fonksiyonları olacaktı burda, Sendkeys diye bi arama yaparsanız belki çalışacak kodlara ulaşabilirsiniz...