簡體   English   中英

如何在C++中使用keybd_event()模擬Ctrl+V

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM