Windows'ta hangi işlemin bir kısayol tuşuna sahip olduğunu nasıl belirleyebilirim?


Yanıtlar:


46

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) .


32
HotKey explorer Windows 8'de oldukça kötü bir şekilde kötüleşti - başlangıçta her kısayol tuşunu "bastırıyor" ve her türlü tuhaf şeyin gerçekleşmesine neden oluyor, ardından kilitleniyor ve öldürülüyor.
Nathan Ridley

2
@NathanRidley Ugh. Keşke yorumunu daha önce okumuş olsaydım. Bu Win8 ve Autohotkey ile korkunç bir kombinasyonuydu. Bu tür bir klavye baskısı da bazı ciddi hasarlar verebilirdi.
VitalyB

11
Hotkey Explorer'ı da Windows 10'da KULLANMAYIN. @NathanRidley'nin dediği gibi aynı şeyi yapıyor. Sadece zor yoldan öğrendim.
Artem Russakovskii

5
Ayrıca Windows 7'de oldukça kasvetli. Ana monitörümün çözünürlüğünü 640x480 (çoklu monitör kurulumu) olarak değiştirdi.
Costa

3
Keşke Hotkey Exporer gibi Windows 8 ve 10 için çalışan daha yeni bir araç olsaydı
Flion

60

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:

  1. Aracı çalıştırın (benim için C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\spyxx_amd64.exeya da spyxx.exe32-bit işlemleri izlemek için kullanın )
  2. Menü çubuğunda Spy -> Log mesajları ... ' seçin (veya Ctrl+ tuşuna basın M)
  3. Kontrol Sistemine Tüm Windows'u içinde Ek Windows çerçevesi
  4. Geçiş Mesajlar sekmesine
  5. Tümünü Temizle düğmesini tıklayın
  6. Seç WM_HOTKEYliste kutusunda, veya çek Klavye içinde İleti Grupları (daha fazla potansiyel gürültü eğer ok ile)
  7. Click OK tuşuna
  8. Söz konusu kısayol tuşuna basın ( örneğin, Win+ R)
  9. Mesajlar (Tüm Pencereler) penceresinden WM_HOTKEYsatırı seçin , sağ tıklayın ve içerik menüsünde Özellikler ... seçeneğini seçin.
  10. Gelen Mesaj Özellikleri iletişim kutusunda, tıklayın Pencere Kolu linki (Bu iletiyi pencere için tanıtıcı olacaktır)
  11. 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.
  12. On Pencere Özellikleri iletişim kutusunda, seçmek Süreç sekmesini
  13. Click İşlem Kimliği linki. Bu (Benim içinde size süreci gösterir Win+ Rdurumda: EXPLORER)

3
Bu harika bir cevap, pek çok adım atıyor, ancak mükemmel bir şekilde ayrıntılı bilgi veriyor. Bir şekilde SPY ++ yüklemeniz gerekeceğini ve 64bit sürümünü 64bit PC'de çalıştırmanız gerekeceğini veya çalışmadığını unutmayın. SPY ++ 'u kurmanın' en kolay 'yolu Visual Studio 2017' yi kurmak olduğunu düşünüyorum, C ++ yükünü seçtiğinizden emin olun. Geliştiriciler için bu biraz fazla iş olabilir.
Roy T.

2
Bu harika. Ayrıntılı, ama mükemmel!
angularsen

16
Mükemmel cevap! Sadece Spy ++ 64-bit sürümünün 64-bit uygulamalar için yalnızca mesajları yakaladığını , bu nedenle kısayol tuşuna bastıktan sonra Mesaj günlüğündekiWM_HOTKEY iletiyi görmüyorsanız, Spy ++ 32-bit sürümünü çalıştırmanız gerekebilir. .
Dawid Ferenczy Rogožan

Bağlantı yeni dokümantasyon sitesine güncellenmelidir . Visual Studio 2017 için gereken tek yük " Visual C ++ core desktop özellikleri ". Uygulamaya özel kısayol tuşu kaydedilmedi mi? Örneğin, MS Word'deki Ctrl + B metni kalınlaştırır.
Franklin Yu,

Bunun için çok teşekkür ederim. Benden Ctrl Shift F'yi neyin çaldığını kesin olarak öğrendim. (Razer Cortex'ti). Başka bir not, özellikleri görüntülemeye çalıştığınızda bazen casus + + 'nın çökmesidir. (Ve yeniden başlatılana kadar daha fazla kanca göremezsiniz.) Bunu, 9. adımdan önce sağ tıklayarak ve "Günlük Kaydı Mesajını Durdur" seçeneğini seçerek çözebildim. Bu noktada, özellikleri incelemeye çalıştığımda artık çöktü. Tekrar teşekkürler!
Khale_Kitha 21:18

6

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, IShellLinkbir 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!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.