-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 回答