Bu soru zaten yanıtlanmış olabilir, ancak uygun yanıtı bulamadım. Bir formda F12 tuşuna basıldığında hata ayıklama anahtarını açmaya çalışıyorum. Onkeydown olayını kullanamıyorum çünkü form ile birlikte her alan için ayrı bir işlev ayarlamak zorunda kaldım. Bu yüzden araştırdım ve bir klavye kanca ayarlamak için SetWindowsHookEx işlevi bulundu. İki endikasyonları F12 tuşuna olmuştur basın bunu her basıldığında alıyorum dışında bu iyi çalışıyor:delphi ile F12 aramasını sağlayan klavye kancası
2014/05/21 14:16:43.334
Code: 0
Key: 123
KeyStroke: 5767169
KeyStroke to Hex: 00580001
2014/05/21 14:16:43.446
Code: 0
Key: 123
KeyStroke: -1067974655
KeyStroke to Hex: C0580001 Note: this should be the keystroke that reflects KEYDOWN
Ben Tuş keydown (WM_KEYDOWN $ 0100) kontrol etmek için olası bir yöntemdir görüyoruz. Sorum şu: WM_KEYDOWN için Keystroke'ı nasıl test edebilirim? Her birey kontrolün OnKeyDown
olaya farklı bir işleyici atamanız gerekmez
function KeyboardHookProc(Code: Integer; Key: Word; KeyStroke: LongInt) : LongInt;
begin
Result := 0;
if Code = HC_NOREMOVE then exit;
Result := CallNextHookEx(FkbHook, Code,Key,KeyStroke);
if Code < 0 then exit;
{
WM_KEYDOWN
}
if (KeyStroke and WM_KEYDOWN) = 0 then { this is where I need to test but this doesn't work! }
begin
if Code = HC_ACTION then
begin
case Key of
vk_F12: begin
TKPMF.Memo1.Lines.Add(FormatDatetime('yyyy/mm/dd hh:nn:ss.zzz',now));
TKPMF.Memo1.Lines.Add('Code: ' + IntToStr(Code));
TKPMF.Memo1.Lines.Add('Key: ' + IntToStr(Key));
TKPMF.Memo1.Lines.Add('KeyStroke: ' + IntToStr(KeyStroke));
TKPMF.Memo1.Lines.Add('KeyStroke to Hex: ' + LongToHex(KeyStroke));
end;
end; {case}
end;
end;
end;
Hangi Delphi sürümünü kullanıyorsunuz? Neden formun KeyPreview özelliğini kullanmıyorsunuz? http://stackoverflow.com/questions/6509242/how-does-delphis-keypreview-work – Frazz
En kötü durumda bir ApplicationEvents kullanın. Kendi başvurunuzu yapmaya gerek yok. –
Emin değilim, neden kimse burada reddeder. OP, araştırma kanıtı ve örnek kod gösterdi. OP ayrıca yeni (rep = 1), bu yüzden Delphi versiyonunu açıklığa kavuşturmamak mazur olabilir. – Argalatyr