2009-06-03 11 views
5

मैं अपने ऐप को कीबोर्ड शॉर्टकट का पता लगाने के लिए चाहूंगा जब यह नहीं चल रहा है, लेकिन विंडोज़ में ऐसा करने की सुविधा दिखाई नहीं देती है, इसलिए उचित फॉलबैक में किसी भी यूआई के बिना पृष्ठभूमि प्रक्रिया होनी चाहिए जो कि कीप्रेस के लिए सुनती है। क्या ऐप में अग्रभूमि में नहीं है जब कुंजीपटल की निगरानी करना संभव है?विंडोज में ग्लोबल कीबोर्ड शॉर्टकट जोड़ने का सबसे आसान तरीका क्या है?

ऐसा लगता है कि यह CodeProject article है जो मुझे चाहिए।

उत्तर

3

इसे गैर घुसपैठ करने का कोई तरीका नहीं है।

वैश्विक कीबोर्ड शॉर्टकट जोड़ने के लिए हमेशा घुसपैठ करना हमेशा होता है। यदि आपको इसे वैसे भी करना है, तो सुनिश्चित करें कि यह एक ऑप्ट-इन है, ऑप्ट-आउट सुविधा नहीं है।

4

एक विंडोज शॉर्टकट में एक संबंधित हॉटकी हो सकती है - अपने स्टार्ट मेनू में किसी भी प्रोग्राम पर राइट-क्लिक करें, प्रॉपर्टी पर जाएं, और आपको "शॉर्टकट कुंजी" बॉक्स दिखाई देगा। तब विंडोज़ आपकी ओर से उस हॉटकी की तलाश करेगा और इसे देखे जाने पर अपना प्रोग्राम लॉन्च करेगी। (मैं इसे Ctrl+Alt+C लॉन्च कैलकुलेटर बनाने के लिए उपयोग करता हूं।)

इसे प्रोग्रामेटिक रूप से सेट करने के लिए, IShellLink का उपयोग करें।

+0

मैं कैसे एक खोल लिंक प्रोग्राम के रूप में बना सकते हैं: मैं हाल ही में इस पुस्तकालय है, जो एक अलग दृष्टिकोण का उपयोग करता है बनाया? – Luke

+0

@ ल्यूक: http://www.codeproject.com/KB/mcpp/mcppshortcuts.aspx – RichieHindle

4

इस एपीआई बुला द्वारा:

RegisterHotKey

http://msdn.microsoft.com/en-us/library/ms646309.aspx

http://www.pinvoke.net/default.aspx/user32/RegisterHotKey.html

तो इस विधि "WndProc" keypresses नजर रखने के लिए जरुरी है।

protected override void WndProc(ref System.Windows.Forms.Message m) 
    { 
     // let the base class process the message 
     base.WndProc(ref m); 

     // if this is a WM_HOTKEY message, notify the parent object 
     const int WM_HOTKEY = 0x312; 
     if (m.Msg == WM_HOTKEY) ............... 

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc(VS.71).aspx

संबंधित मुद्दे