keybd_event()和SendKeys.SendWait()之间有什么区别吗?

col*_*red 1 c# sendkeys

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)

如果没有,是否有任何理由使用一个而不是另一个?

Han*_*ant 5

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

<appSettings> 
    <add key="SendKeys" value="SendInput"/> 
</appSettings> 
Run Code Online (Sandbox Code Playgroud)