Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
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}");
如果没有,是否有任何理由使用其中一个?
keybd_event() 是一个遗留 API,这些天你应该使用 SendInput() 。SendKeys 使用日志挂钩或 SendInput,具体取决于 .config 文件设置。日志挂钩是遗留的,仍然是默认的,SendInput 在 Vista 及更高版本上工作得更好,从 .NET 3 开始可用。所以,大致是的,它们是相同的。配置设置是:
<appSettings> <add key="SendKeys" value="SendInput"/> </appSettings>
最新版本的System.Windows.Forms.SendKeysuse SendInput,尽管您必须对其进行配置才能这样做。Hans 解释了SendKeys.
System.Windows.Forms.SendKeys
SendInput
SendKeys
SendInput是官方认可的用于伪造输入的 API 调用。文件keybd_event说明:
keybd_event
注意 此功能已被取代。请改用 SendInput。
您可能应该使用SendKeys它,因为它更容易。