我的記事本中有這個:
hello
我想使用 Windows 的keybd_event函式模擬 C 中的選擇。這是我的代碼:
keybd_event(VK_SHIFT, 0, 0, 0);
for (size_t i = 0; i < 5; i )
{
keybd_event(VK_LEFT, 0, 0, 0);
keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);
}
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
但是在我運行它之后,它沒有選擇任何東西,它只是轉到檔案的開頭。為什么這不起作用?
uj5u.com熱心網友回復:
添加 KEYEVENTF_EXTENDEDKEY 將正確選擇。
https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-keybdinput#members
#include <windows.h>
void main()
{
Sleep(2000);
keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_EXTENDEDKEY, 0);
for (size_t i = 0; i < 5; i )
{
keybd_event(VK_LEFT, 0, 0, 0);
keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0);
Sleep(20);
}
keybd_event(VK_SHIFT, MapVirtualKey(VK_SHIFT, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
在 keybd_event 中使用 VK_SHIFT,存在 shift 無法釋放的問題,建議使用SendInput代替 keybd_event。對于更高級別的操作,我還建議您使用UI 自動化。
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendinput https://docs.microsoft.com/en-us/windows/win32/winauto/entry-uiauto -win32
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/428307.html
上一篇:重置視窗空閑時間
