SendKeys.SendWait()只是一个包装器,这两个代码片段是相同的吗?
const int VK_ESCAPE = 0x1B;
keybd_event(VK_ESCAPE, 0, 0, 0);
keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0);
Run Code Online (Sandbox Code Playgroud)
和
System.Windows.Forms.SendKeys.SendWait("{ESC}");
Run Code Online (Sandbox Code Playgroud)
如果没有,是否有任何理由使用一个而不是另一个?
keybd_event()是一个遗留API,这些天你应该使用SendInput().SendKeys使用日记钩子或SendInput,具体取决于.config文件设置.日志挂钩是遗留的,仍然是默认的,SendInput在Vista和更高版本上工作得更好,从.NET 3开始可用.因此,粗略地说,是的,它们是相同的.配置设置为:
<appSettings>
<add key="SendKeys" value="SendInput"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)