Kısayol tuşu verilirse, hangi programın kendisine ait olduğunu nasıl bulabilirim?
Dikkat : Win 8 veya daha yenisini kullanıyorsanız, bu yardımcı programı kullanmayın, çünkü bazı sorunlar yaratabilir - yorumlara bakın.
Bir Windows'u Windows 8'den daha önce kullanıyorsanız, Windows Hotkey Explorer
muhtemelen istediğiniz şeydir. Bu aynı zamanda StackOverflow sorusunda da belirtilmiştir: ( Genel bir kısayol tuşuyla hangi işlemin kaydedildiğini öğrenin? (Windows API) .
Bu benim için Win10'da (ve muhtemelen Windows’un belirsiz güncel sürümlerinin hepsinde) ... aynı zamanda buradan kopyalandı https://stackoverflow.com/a/43645062/995048 bu sayfa göründüğü için Arama sonuçlarında ilk sırada olmak:
Olası yollardan biri Visual Studio aracı Spy ++ kullanmaktır.
Bunu bir deneyin:
- Aracı çalıştırın (benim için
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\spyxx_AMD64.exe
konumunda veya 32-bit işlemlerini izlemek içinspyxx.exe
kullanın)- Menü çubuğunda Spy -> Günlük mesajları ... (veya isabet) seçeneğini seçin. Ctrl + M)
- Check Sistemdeki Tüm Windows Ek Windows çerçevede
- Mesajlar sekmesine geçin
- Tümünü Temizle düğmesini tıklayın.
- Liste kutusunda
WM_HOTKEY
öğesini seçin veya Keyboard in Mesaj Grupları (daha fazla potansiyel gürültü ile sorun yaşarsanız) kontrol edin.- OK düğmesini tıklayın.
- Söz konusu kısayol tuşuna basın (Win + R, Örneğin)
- Mesajlar (Tüm Windows) penceresinden
WM_HOTKEY
satırını seçin, sağ tıklayın ve bağlam menüsünde Properties ...- Message Properties iletişim kutusunda, Window Handle bağlantısını tıklayın (bu, mesajı alan pencerenin tanıtıcısı olacaktır)
- Window Properties iletişim kutusundaki Synchronize düğmesini tıklayın. Bu, pencereyi ana Spy ++ penceresi ağaç görünümünde gösterecektir.
- Window Properties iletişim kutusunda, Process sekmesini seçin
- Process ID bağlantısını tıklayın. Bu size süreci gösterecektir (Benim Win + R case:
Explorer
)
Muhtemelen bu konudaki Yığın Taşması ile cevaplanmıştır:
Küresel kısayol tuşu ile hangi işlemin kaydedildiğini öğrenin? (Windows API)
İşte Pauk 'ın cevabı:
Sorunuz ilgimi çekti, bu yüzden biraz araştırma yaptım ve maalesef size uygun bir cevabım yok, sahip olduklarımı paylaşacağımı düşündüm.
Bunu buldum klavye kancası oluşturma örneği (Delphi'de) 1998'de yazılmıştır, ancak Delphi 2007'de birkaç tweaks ile derlenebilir.
Geriye dönme işlevinden geçen
SetWindowsHookEx
çağrısı ile DLL, daha sonra tuş vuruşlarını engelleyebilir: Bu durumda, eğlenmek için onlarla dolaşıyor, sol imleci sağa değiştiriyor vb. Basit bir uygulama daha sonra DLL öğesini çağırır ve sonuçlarını bir TTimer olayına dayanarak geri rapor eder. Eğer ilgileniyorsanız Delphi 2007 tabanlı kodu gönderebilirim.İyi belgelendirilmiş ve yorumlanmıştır ve potansiyel olarak bir basının nereye gittiğini hesaplamak için kullanabilirsiniz. Tuş vuruşlarını gönderen uygulamanın tanıtıcısını bulabilirseniz, onu bu şekilde takip edebilirsiniz. Bu tutamaç sayesinde ihtiyacınız olan bilgiyi kolayca elde edebilirsiniz.
Diğer uygulamalar Kısayol tuşlarını kullanarak kısayol tuşlarını belirlemeyi denedi, çünkü kısayol tuşu için başka bir terim olan Kısayol tuşunu içerebilirler. Bununla birlikte, çoğu uygulama bu özelliği ayarlama eğiliminde değildir, bu yüzden fazla geri dönmeyebilir. Bu rotayla ilgileniyorsanız, Delphi, bir kısayol yüklemek ve kısayol tuşunu bulmak için kullanabileceğiniz
IShellLink
COM arabirimine 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şim hakkınız varsa, kısayollarla/Shell bağlantılarıyla çalışma hakkında iyi bir bölüm var Steve Teixeira ve Xavier Pacheco tarafından sunulan Borland Delphi 6 Geliştirici Kılavuzu . Yukarıdaki örneğim oradan kasaplanmış bir sürüm ve bu site .
Umarım yardımcı olur!