سؤال كيف يمكنني تحديد أي عملية تملك هوتكي في ويندوز؟


بالنظر إلى مفتاح التشغيل السريع ، كيف يمكنني العثور على البرنامج الذي يملكه؟


84
2017-07-23 09:49


الأصل


أي إصدار من النوافذ؟ - Ivo Flipse♦


الأجوبة:


الحذر: إذا كنت تستخدم Win 8 أو أحدث ، لا تستخدم هذه الأداة لأنها سوف تخلق بعض المشاكل - انظر التعليقات.

إذا كنت تقوم بتشغيل Windows أقدم من Windows 8 ، Windows Hotkey Explorer ربما ما تريد. هذا مذكور أيضًا في سؤال StackOverflow: تعرف على العملية التي تم تسجيلها على مفتاح اختصار عالمي؟ (واجهة برمجة تطبيقات Windows).


45
2017-09-21 13:14



برنامج HotKey explorer يعمل بشكل كبير في نظام التشغيل Windows 8 - عند بدء التشغيل فإنه في الأساس "يضغط" على كل مفتاح hotkey ، مما يؤدي إلى حدوث كل أنواع الأشياء الغريبة ، وبعد ذلك يتم إغلاقها ويجب أن يتم قتلها. - Nathan Ridley
تضمين التغريدة أتمنى أن أقرأ تعليقك من قبل. كان هذا مزيجًا فظيعًا مع Win8 و Autohotkey. هذا النوع من الضرب على لوحة المفاتيح كان يمكن أن يحدث بعض الأضرار الخطيرة أيضًا. - VitalyB
لا تستخدم هوتكي إكسبلورر على ويندوز 10 سواء. يفعل نفس الشيءNathanRidley المذكورة. فقط وجدت الطريق الصعب. - Artem Russakovskii
أيضا جميلة بروسي على ويندوز 7. وتبديل دقة الشاشة الرئيسية لي إلى 640 × 480 (إعداد جهاز متعدد). - Costa
أتمنى أن تكون هناك أداة أحدث مثل Hotkey Exporer التي تعمل مع Windows 8 و 10 - Flion


هذا يعمل بالنسبة لي في Win10 (وربما كل الإصدارات الأخرى حتى غامضة من Windows) ... نسخها هنا أيضا من https://stackoverflow.com/a/43645062/995048 نظرًا لأن هذه الصفحة تظهر أولاً في نتائج البحث:

إحدى الطرق الممكنة هي استخدام أداة Visual Studio Spy ++.

جرب هذه المحاولة:

  1. تشغيل الأداة (بالنسبة لي ، في C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\spyxx_amd64.exe)
  2. في شريط القائمة ، حدد الجاسوس -> رسائل السجل ... (أو ضرب السيطرة + M)
  3. التحقق من كل ويندوز في النظام في ال نوافذ إضافية الإطار
  4. قم بالتبديل إلى رسائل التبويب
  5. انقر على امسح الكل زر
  6. تحديد WM_HOTKEY في مربع القائمة ، أو تحقق لوحة المفاتيح في مجموعات الرسائل (إذا كنت على ما يرام مع المزيد من الضوضاء المحتملة)
  7. انقر على حسنا زر
  8. اضغط على مفتاح الاختصار في السؤال (يفوز + R، فمثلا)
  9. اختر WM_HOTKEY خط في الرسائل (كل النوافذ) نافذة ، انقر بزر الماوس الأيمن ، واختر الخصائص... في قائمة السياق
  10. في ال خصائص الرسالة الحوار ، انقر فوق مقبض النافذة الرابط (سيكون هذا هو المؤشر الخاص بالنوافذ التي استلمت الرسالة)
  11. انقر على تزامن زر على خصائص النافذة الحوار. سيظهر هذا النافذة في نافذة عرض Spy ++ الرئيسية.
  12. على ال خصائص النافذة الحوار ، حدد معالجة التبويب
  13. انقر على معرف العمليه حلقة الوصل. هذا سوف تظهر لك العملية (في بلدي يفوز + R قضية: EXPLORER)

34
2018-04-27 17:38



هذه إجابة رائعة ، إنها خطوات كثيرة ولكنها تعطي معلومات مفصلة تمامًا. لاحظ أنك ستحتاج إلى تثبيت SPY ++ بطريقة أو بأخرى وأنك تحتاج إلى تشغيل الإصدار 64 بت على كمبيوتر 64 بت أو لن يعمل. أعتقد أن الطريقة "الأسهل" لتثبيت SPY ++ هي تثبيت Visual Studio 2017 ، تأكد من تحديد حمولة C ++. بالنسبة لغير المطورين ، قد يكون هذا جزءًا كبيرًا من العمل. - Roy T.
هذا ممتاز. تفصيل ، ولكن الكمال! - angularsen
جواب رائع! مجرد ملاحظة ذلك إصدار 64 بت من Spy ++ يمسك فقط رسائل لتطبيقات 64 بت، لذلك إذا كنت لا ترى WM_HOTKEY رسالة في سجل الرسائل بعد الضغط على مفتاح الاختصار ، قد تحتاج إلى تشغيل الإصدار 32 بت من Spy ++. - Dawid Ferenczy
يجب تحديث الرابط إلى موقع وثائق جديد. بالنسبة إلى Visual Studio 2017 ، تكون الحمولة النافعة المطلوبة فقط هي "ميزات سطح المكتب الأساسية C ++ مرئية"لم يتم تسجيل مفتاح التشغيل السريع الخاص بالتطبيق؟ على سبيل المثال ، سيؤدي Ctrl + B في MS Word إلى جعل النص عريضًا. - Franklin Yu
شكرا جزيلا لهذا. وأخيرا وجدت ما كان يسرق Ctrl Shift F مني. (كان الماسح اللحاء). ملاحظة أخرى أن تعطل ++ التجسس أحيانًا عند محاولة عرض الخصائص. (ثم ​​لا يمكنك رؤية المزيد من الخطافات حتى إعادة التشغيل.) تمكنت من حل هذه المشكلة بالنقر بزر الماوس الأيمن ، قبل الخطوة 9 ، واختيار "إيقاف تسجيل الرسائل". عند هذه النقطة ، لم يعد يتعطل عندما حاولت فحص الخصائص. شكرا لك مرة أخرى! - Khale_Kitha


من المحتمل أن يكون هذا قد تم الرد عليه على Stack Overflow في هذا الموضوع:

تعرف على العملية التي تم تسجيلها على مفتاح اختصار عالمي؟ (واجهة برمجة تطبيقات Windows)

من هنا باوكإجابة:

أثار سؤالك اهتمامي ، لذا قمت ببعض الحفر و   في حين ، ولسوء الحظ ، ليس لدي إجابة مناسبة لك ، فكرت   كنت أشارك ما لدي.

لقد وجدت هذا مثال على إنشاء خطاف لوحة المفاتيح (في دلفي)   مكتوبة في عام 1998 ، ولكن يتم compilable في دلفي 2007 مع بضع   القرص.

انها DLL مع دعوة ل SetWindowsHookEx يمر من خلال   وظيفة رد الاتصال ، والتي يمكن بعد ذلك اعتراض ضربات القلب الرئيسية: في هذه الحالة ،   انها ترقيع معهم للمتعة ، وتغيير المؤشر الأيسر إلى اليمين ، إلخ.   ثم يقوم التطبيق البسيط باستدعاء DLL ويعيد تقاريره استنادًا إلى   حدث TTimer. إذا كنت مهتمًا ، يمكنني نشر دلفي 2007   الشفرة.

لقد تم توثيقه وتعليقه بشكل جيد ومن المحتمل أن تستخدمه كـ   أساس العمل في المكان الذي تسير فيه الصحافة الرئيسية. إذا كنت تستطيع الحصول عليها   مقبض التطبيق الذي أرسل ضربات المفاتيح ، يمكنك ذلك   تتبعها بهذه الطريقة. مع هذا المقبض ، ستتمكن من الحصول على   المعلومات التي تحتاجها بسهولة تامة.

حاولت تطبيقات أخرى تحديد مفاتيح الاختصار من خلال الذهاب من خلال   اختصارات لأنها يمكن أن تحتوي على مفتاح اختصار ، وهو مجرد آخر   مصطلح على هوتكي. ومع ذلك ، لا تميل معظم التطبيقات إلى تعيين هذا   خاصية لذلك قد لا يعود كثيرا. إذا كنت مهتما بذلك   الطريق ، دلفي لديه حق الوصول إلى IShellLink واجهة COM التي يمكنك   استخدام لتحميل اختصار من والحصول على هوتكي:

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;

إذا كنت تستطيع الوصول إلى سفاري الكتب على الانترنت، هناك حسن   القسم حول العمل مع اختصارات / روابط shell في بورلاند   دليل مطور دلفي 6 من قبل ستيف Teixeira وكزافييه باتشيكو. لي   المثال أعلاه هو نسخة ذبح من هناك و هذا الموقع.

امل ان يساعد!


5
2017-07-23 09:54