मैं यह कैसे निर्धारित कर सकता हूं कि कौन सी प्रक्रिया विंडोज में हॉटकी का मालिक है?


97

एक हॉटकी को देखते हुए, मैं यह कैसे पता लगा सकता हूं कि कौन सा प्रोग्राम इसका मालिक है?


1
विंडोज़ का कौन सा संस्करण?
Ivo Flipse

जवाबों:


46

सावधानी : यदि आप विन 8 या उसके बाद का उपयोग करते हैं, तो इस उपयोगिता का उपयोग न करें क्योंकि यह कुछ परेशानी पैदा करेगा - टिप्पणियां देखें।

यदि आप विंडोज 8 की तुलना में पहले विंडोज चला रहे हैं, तो Windows Hotkey Explorerसंभवतः वही है जो आप चाहते हैं। स्टैकऑवरफ्लो प्रश्न में यह भी उल्लेख किया गया है: पता लगाएँ कि किस प्रक्रिया ने एक वैश्विक हॉटकी पंजीकृत की? (विंडोज एपीआई)


32
HotKey एक्सप्लोरर विंडोज 8 में बहुत बुरी तरह से खराब हो गया है - स्टार्टअप पर यह मूल रूप से हर हॉटकी को "दबाता है", जिससे सभी प्रकार की अजीब चीजें होती हैं, जिसके बाद यह लॉक हो जाता है और उसे मारना पड़ता है।
नाथन रिडले

2
@ नथनरिडले उघ। काश मैं आपकी टिप्पणी पहले पढ़ता। यह Win8 और ऑटोहोटकी के साथ एक भयानक संयोजन था। इस तरह के कीबोर्ड को कोसने से कुछ गंभीर नुकसान भी हो सकता था।
विटालिबी

11
विंडोज 10 पर हॉटकी एक्सप्लोरर का उपयोग न करें। यह वही बात करता है जो @NathanRidley ने उल्लेख किया है। बस मुश्किल रास्ता मिल गया।
आर्टेम रसाकोवस्की

5
विंडोज 7 पर भी काफी पेचीदा। इसने मेरे मुख्य मॉनिटर के रिज़ॉल्यूशन को 640x480 (मल्टी मॉनिटर सेट अप) में बदल दिया।
कोस्टा

3
मेरी इच्छा है कि हॉटकी एक्सोपर की तरह एक और हालिया टूल है जो विंडोज 8 और 10 के लिए काम करता है
फ्लिन

59

यह मेरे लिए Win10 में काम करता है (और शायद अन्य सभी-हाल ही में विंडोज के संस्करणों में भी) ... https://stackoverflow.com/a/43645062/995048 से भी यहां कॉपी किया गया क्योंकि यह पृष्ठ खोज परिणामों में पहले आ रहा है :

विज़ुअल स्टूडियो टूल Spy ++ का उपयोग करने का एक संभावित तरीका है ।

इसे आजमाइए:

  1. उपकरण चलाएं (मेरे लिए, यह 32-बिट प्रक्रियाओं की निगरानी के लिए C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\spyxx_amd64.exeउपयोग में है , या spyxx.exe)
  2. मेनू बार में, स्पाई चुनें -> लॉग संदेश ... (या हिट Ctrl+ M)
  3. अतिरिक्त विंडोज फ्रेम में सिस्टम में सभी विंडोज की जांच करें
  4. संदेश टैब पर स्विच करें
  5. Clear All बटन पर क्लिक करें
  6. का चयन करें WM_HOTKEYलिस्टबॉक्स में, या जाँच कीबोर्ड में संदेश समूह (यदि आप और अधिक संभावित शोर के साथ ठीक कर रहे हैं)
  7. ओके बटन पर क्लिक करें
  8. प्रश्न में हॉटकी दबाएं ( उदाहरण के लिए Win+ R)
  9. संदेश (सभी विंडोज) विंडो WM_HOTKEYमें लाइन का चयन करें , राइट क्लिक करें, और संदर्भ मेनू में गुण ... का चयन करें
  10. में संदेश गुण संवाद, क्लिक करें विंडो हैंडल लिंक (इस विंडो कि संदेश प्राप्त करने के लिए संभाल हो जाएगा)
  11. विंडो प्रॉपर्टीज डायलॉग पर सिंक्रोनाइज़ बटन पर क्लिक करें । यह मुख्य स्पाई ++ विंडो ट्रीव्यू में विंडो को दिखाएगा।
  12. पर खिड़की गुण संवाद, चयन प्रक्रिया टैब
  13. प्रक्रिया आईडी लिंक पर क्लिक करें । यह आपको प्रक्रिया दिखाएगा (मेरे Win+ Rमामले में EXPLORER) :

3
यह एक महान जवाब है, यह बहुत सारे कदम है लेकिन पूरी तरह से विस्तृत जानकारी देता है। ध्यान दें कि आपको किसी तरह SPY ++ इंस्टॉल करने की आवश्यकता होगी और आपको 64 बिट पीसी पर 64 बिट संस्करण चलाने की आवश्यकता होगी या यह काम नहीं करेगा। मुझे लगता है कि SPY ++ को स्थापित करने का 'सबसे आसान' तरीका Visual Studio 2017 स्थापित करना है, C ++ पेलोड का चयन करना सुनिश्चित करें। गैर डेवलपर्स के लिए यह थोड़ा बहुत काम हो सकता है।
रॉय टी।

2
यह पूर्ण है। विस्तृत, लेकिन एकदम सही!
कोणीय काल

16
बहुत बढ़िया जवाब! बस ध्यान दें कि स्पाई ++ का 64-बिट संस्करण केवल 64-बिट अनुप्रयोगों के लिए संदेश को पकड़ता है , इसलिए यदि आपको हॉटकी दबाने के बाद मैसेज लॉगWM_HOTKEY में संदेश नहीं दिखता है , तो आपको स्पाई ++ का 32-बिट संस्करण चलाने की आवश्यकता हो सकती है ।
दाविद फेरेन्स्की रोगोजान

लिंक को नई प्रलेखन साइट पर अद्यतन किया जाना चाहिए । Visual Studio 2017 के लिए, केवल आवश्यक पेलोड " Visual C ++ कोर डेस्कटॉप सुविधाएँ " है। एप्लिकेशन विशिष्ट हॉटकी लॉग नहीं है? उदाहरण के लिए, MS Word में Ctrl + B टेक्स्ट को बोल्ड बना देगा।
फ्रैंकलिन यू

इस के लिए बहुत बहुत धन्यवाद। मुझे अंतिम रूप से पता चला कि मेरे से Ctrl Shift F क्या चोरी हुआ था। (यह रेजर कोर्टेक्स था)। एक और नोट यह है कि कभी-कभी जासूसी ++ दुर्घटनाग्रस्त हो जाएगी जब आप गुणों को देखने की कोशिश करेंगे। (और फिर आप रिबूट करने तक कोई और हुक नहीं देख सकते हैं।) मैं इसे राइट क्लिक करके, चरण 9 से पहले और "स्टॉप लॉगिंग मैसेज" को चुनने में सक्षम था। उस समय, यह अब दुर्घटनाग्रस्त नहीं हुआ जब मैंने गुणों की जांच करने का प्रयास किया। एक बार फिर धन्यवाद!
खले_किथा

6

यह संभवतः इस धागे में स्टैक ओवरफ्लो पर उत्तर दिया गया है:

पता करें कि किस प्रक्रिया ने एक वैश्विक हॉटकी पंजीकृत की? (विंडोज एपीआई)

यहाँ है Pauk जवाब:

आपके प्रश्न ने मेरी रुचि को बढ़ा दिया है, इसलिए मैंने थोड़ी खुदाई की है और जबकि, दुर्भाग्य से मेरे पास आपके लिए उचित उत्तर नहीं है, मैंने सोचा कि मेरे पास जो है वह साझा करूँगा।

मुझे 1998 में लिखा कीबोर्ड हुक (डेल्फी में) बनाने का यह उदाहरण मिला , लेकिन डेल्फी 2007 में एक दोहों के साथ इसका संकलन किया जा सकता है।

यह एक कॉल के साथ एक DLL है SetWindowsHookExजो कॉलबैक फ़ंक्शन से गुजरता है, जो तब कुंजी स्ट्रोक को रोक सकता है: इस मामले में, यह उनके लिए मज़ाक के साथ छेड़छाड़ कर रहा है, बाएं कर्सर को दाईं ओर बदल रहा है, आदि। एक साधारण ऐप फिर DLL को कॉल करता है और वापस रिपोर्ट करता है। एक TTimer घटना के आधार पर इसके परिणाम। यदि आप रुचि रखते हैं तो मैं डेल्फी 2007 आधारित कोड पोस्ट कर सकता हूं।

यह अच्छी तरह से प्रलेखित और टिप्पणी की गई है और आप संभावित रूप से इसे काम करने के आधार के रूप में उपयोग कर सकते हैं जहां एक प्रमुख प्रेस जा रहा है। यदि आप कुंजी स्ट्रोक भेजने वाले एप्लिकेशन का हैंडल प्राप्त कर सकते हैं, तो आप इसे वापस उसी तरह ट्रैक कर सकते हैं। उस हैंडल से आप वह जानकारी प्राप्त कर पाएंगे जिसकी आपको बहुत आसानी से आवश्यकता है।

अन्य ऐप्स ने अपने शॉर्टकट से गुजरते हुए हॉटकी का निर्धारण करने की कोशिश की है क्योंकि उनमें एक शॉर्टकट कुंजी हो सकती है, जो हॉटकी के लिए एक और शब्द है। हालाँकि अधिकांश एप्लिकेशन इस संपत्ति को सेट करने की प्रवृत्ति नहीं रखते हैं, इसलिए यह अधिक वापस नहीं आ सकती है। यदि आप उस मार्ग में रुचि रखते हैं, तो डेल्फी के पास IShellLinkCOM इंटरफ़ेस तक पहुंच है जिसका उपयोग आप एक शॉर्टकट को लोड करने और इसकी हॉटलाइन प्राप्त करने के लिए कर सकते हैं:

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;

यदि आपको सफारी बुक्स ऑनलाइन तक पहुँच मिली है , तो स्टीव टेक्सीरा और जेवियर पचेको द्वारा बोरलैंड डेल्फी 6 डेवलपर गाइड में शॉर्टकट / शेल लिंक के साथ काम करने के बारे में एक अच्छा खंड है । ऊपर मेरा उदाहरण वहाँ और इस साइट से एक कसाई संस्करण है ।

उम्मीद है की वो मदद करदे!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.