use*_*241 3 c winapi sleep windows-xp-sp3
我正在尝试模拟按键和按键动作.
例如:2638毫秒.
SendMessage(hWnd, WM_KEYDOWN, keyCode, 0);
Sleep(2638);
SendMessage(hWnd, WM_KEYUP, keyCode, 0);
Run Code Online (Sandbox Code Playgroud)
你怎么知道它真的有用吗?
您不会使用此代码,因为准确测量代码执行所需的时间是一项艰巨的任务.
要了解您的问题标题提出的问题(您应该一次提出一个问题......)所述功能的准确性由操作系统决定.在Linux上,系统时钟粒度为10ms,因此通过nanosleep()的定时进程暂停仅保证精确到10ms,即使这样,也不能保证在指定的时间内完全休眠.(见下文.)
在Windows上,可以更改时钟粒度以适应电源管理需求(例如,降低粒度以节省电池电量).有关Sleep功能,请参阅MSDN的文档.
请注意,对于Sleep()/ nanosleep(),操作系统仅保证进程暂停将至少持续您指定的时间.执行其他进程总是可以延迟恢复进程.
因此,上面的代码发送的按键事件将比按键事件发送至少2.638秒,而不是更快的毫秒.但事件有可能在2.7秒,2.8秒甚至3秒后发送.(或者,如果实时进程占用了CPU并且在一段时间内没有放弃控制,那么很久以后.)