بالنظر إلى مفتاح الاختصار ، كيف يمكنني العثور على البرنامج الذي يملكه؟
تحذير : إذا كنت تستخدم Win 8 أو ما بعده ، فلا تستخدم هذه الأداة لأنها سوف تخلق بعض المشاكل - راجع التعليقات.
إذا كنت تقوم بتشغيل Windows أقدم من Windows 8 ، فربما Windows Hotkey Explorer
هو ما تريده. تم ذكر ذلك أيضًا في سؤال StackOverflow: تعرف على العملية التي سجلت مفتاح الاختصار العام؟ (Windows API) .
هذا الأمر يناسبني في Win10 (وربما جميع الإصدارات الأخرى حتى الغامضة من Windows) ... كما تم نسخها هنا من https://stackoverflow.com/a/43645062/995048 لأن هذه الصفحة تبدو ليأتي أولاً في نتائج البحث:
إحدى الطرق الممكنة لاستخدام أداة Visual Studio Visual Spy ++ .
جرب هذه:
- قم بتشغيل الأداة (بالنسبة لي ، إنها في
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\spyxx_AMD64.exe
، أو استخدمspyxx.exe
لمراقبة العمليات ذات 32 بت)- في شريط القوائم ، حدد Spy -> سجل الرسائل ... (أو اضغط على Ctrl + M)
- حدد كافة أنظمة Windows في النظام في إطار Windows إضافي
- قم بالتبديل إلى علامة التبويب الرسائل
- انقر فوق الزر مسح الكل
- حدد
WM_HOTKEY
في مربع القائمة ، أو حدد لوحة المفاتيح في مجموعات الرسائل (إذا كنت موافقًا مع المزيد من الضوضاء المحتملة)- انقر فوق الزر OK
- اضغط على مفتاح الاختصار المعني (Win + R، فمثلا)
- حدد السطر
WM_HOTKEY
في نافذة الرسائل (كافة أنظمة تشغيل Windows) ، وانقر بزر الماوس الأيمن ، وحدد خصائص ... في قائمة السياق- في مربع الحوار خصائص الرسالة ، انقر على الرابط نافذة مقبض النافذة (سيكون هذا هو مقبض الإطار الذي تلقى الرسالة)
- انقر فوق الزر مزامنة في مربع الحوار خصائص النافذة . سيؤدي ذلك إلى عرض النافذة في عرض نافذة Spy ++ الرئيسي.
- في مربع الحوار خصائص النافذة ، حدد علامة التبويب العملية
- انقر على الرابط معرف العملية . هذا سيظهر لك العملية (في بلدي Win + R الحالة:
Explorer
)
ربما تمت الإجابة على Stack Overflow في هذا الموضوع:
معرفة ما هي العملية المسجلة هوتكي العالمية؟ (واجهة برمجة تطبيقات Windows)
إليك إجابة Pauk :
لقد أثار سؤالك اهتماماتي ، لذا فقد قمت بالبحث قليلاً ، لكن للأسف لم يكن لدي إجابة مناسبة لك ، اعتقدت أنني سأشارك ما لدي.
لقد وجدت هذا المثال لإنشاء ربط لوحة المفاتيح (في دلفي) مكتوبًا في عام 1998 ، ولكنه قابل للتجميع في دلفي 2007 مع قرصين.
إنه DLL مع استدعاء
SetWindowsHookEx
الذي يمر عبر وظيفة رد اتصال ، والتي يمكنها عندئذ اعتراض حدود المفاتيح: في هذه الحالة ، يتم العبث بها للمتعة ، وتغيير المؤشر الأيسر إلى اليمين ، إلخ. تطبيق بسيط ثم يستدعي DLL ويعيد نتائجه بناءً على حدث TTimer. إذا كنت مهتمًا ، يمكنني نشر رمز دلفي 2007.تم توثيقه وتعليقه بشكل جيد ، وربما يمكنك استخدامه كأساس للعمل على تحديد مكان الصحافة الرئيسية. إذا تمكنت من الحصول على مؤشر التطبيق الذي أرسل حدود المفاتيح ، فيمكنك تتبع ذلك مرة أخرى. باستخدام هذا المقبض ، ستتمكن من الحصول على المعلومات التي تحتاجها بسهولة تامة.
حاولت تطبيقات أخرى تحديد مفاتيح الاختصار من خلال تصفح اختصاراتها لأنها يمكن أن تحتوي على مفتاح اختصار ، وهو مجرد مصطلح آخر لـ hotkey. ومع ذلك ، لا تميل معظم التطبيقات إلى ضبط هذه الخاصية ، لذا فقد لا تُرجع كثيرًا. إذا كنت مهتمًا بهذا المسار ، فيمكن لدلفي الوصول إلى
IShellLink
COM interface والتي يمكنك استخدامها لتحميل اختصار لأعلى والحصول على مفتاح الاختصار الخاص به: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 ، فهناك قسم جيد حول العمل مع روابط الاختصارات/Shell في دليل مطوري Borland Delphi 6 من تأليف Steve Teixeira و Xavier Pacheco. المثال الخاص بي أعلاه هو إصدار تم ذبحه من هناك و هذا الموقع .
امل ان يساعد!