2011-06-20 20 views
5

मैं अपने WinForm एप्लिकेशन के लिए एक कीबोर्ड ट्रिगर बनाने की कोशिश कर रहा हूं जो विंडोज कुंजी + # (# = एक संख्या कुंजी) शॉर्टकट को कॉल करता है जो एनएच स्लॉट में एप्लिकेशन का एक नया उदाहरण लॉन्च करता है टास्कबारSendKeys.Send और Windows Key

उदाहरण के लिए, मैं फ़ोटोशॉप को चलाने के लिए चाहता हूं, जो कि मेरे टास्कबार के पहले स्लॉट में है।

WinKey+1 

मैंने CTRL + ESC विकल्प के बारे में सुना है, लेकिन नीचे दिया गया कोड काम नहीं करता है।

SendKeys.Send("^{ESC}1") 

कोई अन्य विकल्प? क्या मुझे इसके लिए बैच फ़ाइल चलाने की ज़रूरत है?

धन्यवाद! :)

उत्तर

11

CTRL+ESCWIN कुंजी का अनुकरण नहीं करता है, यह केवल स्टार्ट मेनू को कॉल करता है।

पी/आह्वान के बारे में थोड़ी हमेशा हर किसी को खुश करता है:

using System.Runtime.InteropServices; 
using System.Windows.Forms; 

static class KeyboardSend 
{ 
    [DllImport("user32.dll")] 
    private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo); 

    private const int KEYEVENTF_EXTENDEDKEY = 1; 
    private const int KEYEVENTF_KEYUP = 2; 

    public static void KeyDown(Keys vKey) 
    { 
     keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY, 0); 
    } 

    public static void KeyUp(Keys vKey) 
    { 
     keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); 
    } 
} 

और आप इसे इस तरह से कहते हैं:

KeyboardSend.KeyDown(Keys.LWin); 
KeyboardSend.KeyDown(Keys.D4); 
KeyboardSend.KeyUp(Keys.LWin); 
KeyboardSend.KeyUp(Keys.D4); 

परीक्षण किया गया, यह काम करता है। मज़े करो!

+0

धन्यवाद! आपने अपने उदाहरण में WinKey + 4 का उपयोग किया था। इसे WinKey + 1 में बदलने के लिए, Keys.D4 को Keys.D1 में बदलें। फिर से धन्यवाद! :) – demijnzia