2008-09-17 10 views
24

संभव डुप्लिकेट:
How can I register a global hot key to say CTRL+SHIFT+(LETTER) using WPF and .NET 3.5?सी # में ग्लोबल हॉटकी प्रोसेसिंग से निपटने का सबसे अच्छा तरीका?

मैं अपने नए एप्लिकेशन में एकाधिक वैश्विक हॉटकी के लिए (विंडोज़ में कहीं से भी एप्लिकेशन को नियंत्रित करने के) चाहते हैं, और दिए गए सूत्रों के सभी/वेब पर पाया गया समाधान मुझे एक प्रकार का एक लम्बाई समाधान प्रदान करता है (या तो केवल एक g.hotkey के लिए समाधान, या समाधान जो स्क्रीन पर कष्टप्रद माउस देरी बनाते हैं)।

क्या कोई यहां संसाधन के बारे में जानता है जो मुझे यह प्राप्त करने में मदद कर सकता है, जिससे मैं सीख सकता हूं? कुछ भी?

धन्यवाद! :)

+0

एक WPF समाधान आप पर मेरा उत्तर देख सकते हैं के लिए करने के लिए विभिन्न lambdas सेट कर सकते हैं: [ यहां लिंक विवरण दर्ज करें] [1] [1]: http://stackoverflow.com/questions/48935/how -can-i-register-a-global-hot-key-to-say-ctrlshiftletter-use-wpf-and-ne/9330358 # 9330358 –

+0

क्या आप यही चाहते हैं? http://stackoverflow.com/questions/48935/c-using-wpf-and-net-35-how-can-i-register-a-global-hot-key-to-say-ctrlshiftlett – Gishu

उत्तर

7

http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx

आप .net 3.5 का उपयोग नहीं कर रहे हैं।

+2

-1 कीबोर्ड वैश्विक हॉटकी के लिए हुक एक अच्छा विकल्प नहीं है। – CodesInChaos

+1

कुछ भी विनिर्देश के अनुरूप नहीं है: "विंडोज़ में कहीं से भी ऐप को नियंत्रित करने के लिए", तो या तो बेहतर अंतर्दृष्टि प्रदान करें [एसआईसी] या कृपया अपनी टिप्पणी हटा दें। – arul

+0

['रजिस्टर होटके '] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646309.aspx) कोई फर्क नहीं पड़ता कि कौन सी विंडो फोकस कर रही है, इसलिए यह spec के अनुरूप है। – CodesInChaos

5

मैं प्रत्येक हॉटकी के लिए RegisterHotKey() को कॉल करने के लिए पी/Invoke का उपयोग करके इसे संभालता हूं, और उसके बाद WM_HOTKEY संदेश की अधिसूचित होने के लिए नेटफॉर्म (मान लीजिए कि आप WinForms का उपयोग कर रहे हैं) का उपयोग करें। यह आपके अधिकांश हॉटकी कोड को एक ही स्थान पर रखना चाहिए।

+0

क्या आप इसका त्वरित उदाहरण बना सकते हैं? – Svish

+0

क्या आप WinForms या WPF का उपयोग कर रहे हैं? – Andy

39

सबसे अच्छा समाधान मैंने पाया है http://bloggablea.wordpress.com/2007/05/01/global-hotkeys-with-net/

Hotkey hk = new Hotkey(); 

hk.KeyCode = Keys.1; 
hk.Windows = true; 
hk.Pressed += delegate { Console.WriteLine("Windows+1 pressed!"); }; 

hk.Register(myForm); 

नोट कैसे आप अलग अलग हॉटकी

+0

क्या यह कक्षा माउस बटन (Keys.LButton और Keys.RButton) के साथ काम करने के लिए संभव है? मैंने एक ही कक्षा का उपयोग करने की कोशिश की है और इसे केवल कीबोर्ड कुंजी के साथ काम करने के लिए प्राप्त कर सकते हैं। –

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

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