1

SendKeys.SendWait() 只是一个包装器,这两个代码片段是相同的吗?

const int VK_ESCAPE = 0x1B;
keybd_event(VK_ESCAPE, 0, 0, 0);
keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0);

System.Windows.Forms.SendKeys.SendWait("{ESC}");

如果没有,是否有任何理由使用其中一个?

4

2 回答 2

5

keybd_event() 是一个遗留 API,这些天你应该使用 SendInput() 。SendKeys 使用日志挂钩或 SendInput,具体取决于 .config 文件设置。日志挂钩是遗留的,仍然是默认的,SendInput 在 Vista 及更高版本上工作得更好,从 .NET 3 开始可用。所以,大致是的,它们是相同的。配置设置是:

<appSettings> 
    <add key="SendKeys" value="SendInput"/> 
</appSettings> 
于 2011-02-23T21:19:53.330 回答
1

最新版本的System.Windows.Forms.SendKeysuse SendInput,尽管您必须对其进行配置才能这样做。Hans 解释了SendKeys.

SendInput是官方认可的用于伪造输入的 API 调用。文件keybd_event说明:

注意 此功能已被取代。请改用 SendInput。

您可能应该使用SendKeys它,因为它更容易。

于 2011-02-23T21:18:47.513 回答