2011-06-20 16 views
5

Windowsのキーを呼び出すWinFormアプリケーションのキーボードトリガーを作成しようとしています+#(#=数字キー)ショートカットで、n番目のスロットにアプリケーションの新しいインスタンスを起動しますタスクバー。SendKeys.SendとWindowsのキー

たとえば、タスクバーの最初のスロットにあるPhotoshopを実行したいとします。

WinKey+1 

私はCTRL + ESCの代替について聞いたことがありますが、以下のコードは機能しません。

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

他の代替手段はありますか?このためにバッチファイルを実行する必要がありますか?

ありがとうございます! :)

答えて

11

CTRL+ESCWINのキーをシミュレートしていないだけで、スタートメニューが呼び出されます。

P /呼び出しのビットは常に皆を幸せにする:

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

関連する問題