[英]how to simulate Ctrl + V using keybd_event () in C++
我想將剪貼板中的文本粘貼到某個程序的文本框。 所以我嘗試使用keybd_event。
keybd_event(VK_CONTROL,0x1D, 0, 0);
keybd_event('V', 0x2F, 0, 0);
keybd_event('V', 0x2F, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0x1D, KEYEVENTF_KEYUP, 0);
但這沒有被執行。 所以我嘗試了不同的方式
keybd_event(VK_CONTROL,0x1D, KEYEVENTF_EXTENDEDKEY, 0);
keybd_event('V', 0x2F, 0, 0);
keybd_event('V', 0x2F, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0x1D, KEYEVENTF_KEYUP, 0);
所以這很好用。 但是,從那時起,所有鍵盤輸入都是通過按下 ctrl 鍵輸入的。 也許我認為按鍵消息不起作用
如何解決這個問題呢?
但是,從那時起,所有鍵盤輸入都是通過按下 ctrl 鍵輸入的。 也許我認為按鍵消息不起作用
您模擬右側CONTROL
WM_KEYDOWN
但左側CONTROL
WM_KEYUP
。 因此右側的CTRL
鍵尚未釋放。
以下代碼將起作用:
keybd_event(VK_CONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event('V', 0x2F, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event('V', 0x2F, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
擴展鍵標志(
KEYEVENTF_EXTENDEDKEY
)指示該鍵是否為擴展鍵,例如出現在增強型 101 鍵或 102 鍵鍵盤上的右側 ALT 和 CTRL 鍵。 如果是擴展鍵,則值為 1; 否則為 0。
請參閱WM_KEYUP
消息。
keybd_event 函數已被取代。 請改用SendInput
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.