Kısayol tuşu verilirse, hangi programın kendisine ait olduğunu nasıl bulabilirim?
Kısayol tuşu verilirse, hangi programın kendisine ait olduğunu nasıl bulabilirim?
Yanıtlar:
Dikkat : Win 8 veya üstünü kullanıyorsanız, bu yardımcı programı kullanmayın, aksi halde sorun yaratabilir - yorumlara bakın.
Windows 8'den daha eski bir Windows 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) ... benim de bu sayfa arama sonuçlarında ilk sırada göründüğü için buraya https://stackoverflow.com/a/43645062/995048 adresinden kopyalandı. :
Mümkün bir yolu, 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
ya daspyxx.exe
32-bit işlemleri izlemek için kullanın )- Menü çubuğunda Spy -> Log mesajları ... ' nı seçin (veya Ctrl+ tuşuna basın M)
- Kontrol Sistemine Tüm Windows'u içinde Ek Windows çerçevesi
- Geçiş Mesajlar sekmesine
- Tümünü Temizle düğmesini tıklayın
- Seç
WM_HOTKEY
liste kutusunda, veya çek Klavye içinde İleti Grupları (daha fazla potansiyel gürültü eğer ok ile)- Click OK tuşuna
- Söz konusu kısayol tuşuna basın ( örneğin, Win+ R)
- Mesajlar (Tüm Pencereler) penceresinden
WM_HOTKEY
satırı seçin , sağ tıklayın ve içerik menüsünde Özellikler ... seçeneğini seçin.- Gelen Mesaj Özellikleri iletişim kutusunda, tıklayın Pencere Kolu linki (Bu iletiyi pencere için tanıtıcı olacaktır)
- Pencere Özellikleri iletişim kutusundaki Senkronize Et düğmesini tıklayın . Bu, pencereyi ana Spy ++ penceresi ağaç görünümünde gösterecektir.
- On Pencere Özellikleri iletişim kutusunda, seçmek Süreç sekmesini
- Click İşlem Kimliği linki. Bu (Benim içinde size süreci gösterir Win+ Rdurumda:
EXPLORER
)
WM_HOTKEY
iletiyi görmüyorsanız, Spy ++ 32-bit sürümünü çalıştırmanız gerekebilir. .
Muhtemelen bu konudaki Yığın Taşması ile ilgili olarak cevaplandırılmıştır:
Küresel bir kısayol tuşuyla hangi işlemin kaydedildiğini öğrenin? (Windows API)
İşte Pauk 'un cevabı:
Sorunuz ilgimi çekti, bu yüzden biraz kazma işlemi yaptım ve maalesef size uygun bir cevabım yok, sahip olduğumu paylaşacağımı düşündüm.
1998'de yazılan klavye kancası (Delphi'de) oluşturma örneğini buldum , ancak Delphi 2007'de birkaç tweaks ile derlenebilir.
Bu
SetWindowsHookEx
, tuş vuruşlarını engelleyebilen bir geri çağırma işlevinden geçen bir çağrıdır , bu durum tuş vuruşlarını engelleyebilir: Bu durumda, eğlence için onlarla bağlantı kuruyor, sol imleci sağa değiştiriyor, vs. Basit bir uygulama daha sonra DLL'yi çağırıyor ve geri rapor veriyor TTimer olayına dayanan sonuçları. 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 rotaya ilgi duyuyorsanız Delphi,
IShellLink
bir kısayol yüklemek ve kısayol tuşunu bulmak 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;
Eğer erişimi var ise Safari Books Online , bir orada kısayolları / kabuk bağlantıları ile çalışma hakkında iyi bölüm Steve Teixeira ve Xavier Pacheco Borland Delphi 6 Geliştirici Kılavuzu'nda. Yukarıdaki örneğim, buradan ve bu siteden kasaplanmış bir versiyon .
Umarım yardımcı olur!