-1

keybd_event() を使用して Ctrl+Alt+H をシミュレートするにはどうすればよいですか? 次のコードは機能しません:

    keybd_event((byte)Convert.ToInt32(Keys.Control), (byte)MapVirtualKey(Convert.ToInt32(Keys.Control), 0), 0, 0);
        keybd_event((byte)Convert.ToInt32(Keys.Alt), (byte)MapVirtualKey(Convert.ToInt32(Keys.Alt), 0), 0, 0);
        keybd_event((byte)Keys.H, (byte)MapVirtualKey(Convert.ToInt32(Keys.H), 0), 0, 0);
        keybd_event((byte)Keys.H, (byte)MapVirtualKey(Convert.ToInt32(Keys.H), 0), KEYEVENTF_KEYUP, 0);
        keybd_event((byte)Convert.ToInt32(Keys.Alt), (byte)MapVirtualKey(Convert.ToInt32(Keys.Alt), 0), KEYEVENTF_KEYUP, 0);
        keybd_event((byte)Convert.ToInt32(Keys.Control), (byte)MapVirtualKey(Convert.ToInt32(Keys.Control), 0), KEYEVENTF_KEYUP, 0);   
4

2 に答える 2

0

メソッドをオーバーライドする必要がありますProcessCmdKey

このリンクを参照してください:

キーストロークの取得 Ctrl-Alt-Q

于 2012-12-11T21:13:50.210 に答える
0

SendKeys を使用してこれを行うことができます。

SendKeys.Send("^%H");

http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx

編集 (以下のコメントを参照してください...)

特定のホット キー セットを使用してセットアップしたデスクトップ上の Windows ショートカットを起動したいとします。この場合、CTRL + ALT + H。そのショートカット キーの組み合わせを実行するアプリを作成します。

これが機能するためには、デスクトップに「フォーカス」が必要です。これは、他のウィンドウが起動されていないことを意味します。したがって、アプリケーションを起動し、他のすべてのウィンドウを最小化してから、アプリケーションのボタンを押してください。ボタンの背後にある必要があるコードは次のとおりです。

    private void button1_Click(object sender, EventArgs e)
    {
        this.WindowState = FormWindowState.Minimized;
        SendKeys.SendWait("^%h");
    }

これにより、現在のウィンドウが最小化され、デスクトップにフォーカスが移ります。次に、ショートカットを起動するデスクトップに CTRL キーと ALT キーと H キーを送信します。

于 2012-12-11T21:14:37.827 に答える