Sorunuz ilgimi çekti, bu yüzden biraz araştırma yaptım ve maalesef sizin için uygun bir cevabım yokken, sahip olduğum şeyi paylaşacağımı düşündüm.
Bu klavye kancası (Delphi'de) oluşturma örneğini 1998'de buldum, ancak Delphi 2007'de birkaç ince ayar ile derlenebilir.
Bu SetWindowsHookEx
, bir geri arama işlevinden geçen bir çağrıya sahip bir DLL'dir ve daha sonra tuş vuruşlarını kesebilir: Bu durumda, eğlenmek için onlarla uğraşıyor, sol imleci sağa çeviriyor vb. Daha sonra basit bir uygulama, DLL'yi çağırır ve geri rapor verir. TTimer olayına dayalı sonuçları. Eğer ilgilenirseniz, Delphi 2007 tabanlı kodu gönderebilirim.
İyi belgelenmiş ve yorumlanmıştır ve potansiyel olarak bir tuşa basmanın nereye gittiğini bulmanın temeli olarak kullanabilirsiniz. Tuş vuruşlarını gönderen uygulamanın tanıtıcısını bulabilirseniz, o şekilde geriye doğru takip edebilirsiniz. Bu tutamaç ile ihtiyacınız olan bilgileri oldukça kolay bir şekilde elde edebilirsiniz.
Diğer uygulamalar, kısayol tuşu için başka bir terim olan bir Kısayol tuşu içerebildiklerinden, Kısayollarından geçerek kısayol tuşlarını belirlemeye çalıştı. Ancak çoğu uygulama bu özelliği ayarlama eğiliminde değildir, bu nedenle çok fazla geri dönmeyebilir. Bu rotayla ilgileniyorsanız, Delphi, IShellLink
bir kısayol yüklemek ve kısayol tuşunu almak için kullanabileceğiniz COM arayüzüne erişebilir :
uses ShlObj, ComObj, ShellAPI, ActiveX, CommCtrl;
procedure GetShellLinkHotKey;
var
LinkFile : WideString;
SL: IShellLink;
PF: IPersistFile;
HotKey : Word;
HotKeyMod: Byte;
HotKeyText : string;
begin
LinkFile := 'C:\Temp\Temp.lnk';
OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL));
// The IShellLink implementer must also support the IPersistFile
// interface. Get an interface pointer to it.
PF := SL as IPersistFile;
// Load file into IPersistFile object
OleCheck(PF.Load(PWideChar(LinkFile), STGM_READ));
// Resolve the link by calling the Resolve interface function.
OleCheck(SL.Resolve(0, SLR_ANY_MATCH or SLR_NO_UI));
// Get hotkey info
OleCheck(SL.GetHotKey(HotKey));
// Extract the HotKey and Modifier properties.
HotKeyText := '';
HotKeyMod := Hi(HotKey);
if (HotKeyMod and HOTKEYF_ALT) = HOTKEYF_ALT then
HotKeyText := 'ALT+';
if (HotKeyMod and HOTKEYF_CONTROL) = HOTKEYF_CONTROL then
HotKeyText := HotKeyText + 'CTRL+';
if (HotKeyMod and HOTKEYF_SHIFT) = HOTKEYF_SHIFT then
HotKeyText := HotKeyText + 'SHIFT+';
if (HotKeyMod and HOTKEYF_EXT) = HOTKEYF_EXT then
HotKeyText := HotKeyText + 'Extended+';
HotKeyText := HotKeyText + Char(Lo(HotKey));
if (HotKeyText = '') or (HotKeyText = #0) then
HotKeyText := 'None';
ShowMessage('Shortcut Key - ' + HotKeyText);
end;
Safari Books Online'a erişiminiz varsa, Steve Teixeira ve Xavier Pacheco tarafından yazılan Borland Delphi 6 Geliştirici Kılavuzunda kısayollarla / kabuk bağlantılarıyla çalışma hakkında iyi bir bölüm var . Yukarıdaki örneğim oradan ve bu siteden kesilmiş bir versiyondur .
Umarım yardımcı olur!
WM_HOTKEY
mesajı görmezseniz, Spy ++' nın 32 bit sürümünü çalıştırmanız gerekebilir. .