日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

玩转keybd_event

發布時間:2025/3/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩转keybd_event 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模擬鍵盤平時不是很常用, 但是當調用某些快捷鍵執行某項功能時, 它真的是那么的方便呀.? 你不信?? 看看下面的實現, 你就會大呼: 為什么不早點告訴我?? 呵呵,? 原來沒有blog呀,? 都靠這些掙分呢.
1) 顯示桌面:

很多軟件有顯示桌面的功能, 并且大家的方法都是遍歷窗口,? 然后讓它們最小化, 其實 win系統給咱們了一個非常方便的WIN鍵(就是鍵盤上在CTRL鍵和ALT鍵之間的那個帶win標志的按鍵), 利用它, 可以輕松的完成顯示桌面的功能.
??? keybd_event(VK_LWIN, 0, 0 ,0);
??? keybd_event('M', 0, 0 ,0);
??? keybd_event('M', 0, KEYEVENTF_KEYUP ,0);
??? keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);

其他的操作也類似, 比如直接顯示開始的運行,就把上面的'M'換成'R'即可。
直接
??? keybd_event(VK_LWIN, 0, 0 ,0);
??? keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
直接顯示“開始”對話框了。

2) 實現快速的全選

很多的時候,比如listctrl實現全選,你可以用listctrl循環設置每一項的狀態為選中,多羅索的事情呀。用快捷鍵試一試CTRL+A,其他的快捷鍵一樣的用法,呵呵,你知道怎么辦了吧?
??? keybd_event(VK_CONTROL, (BYTE)0, 0 ,0);
??? keybd_event('A',(BYTE)0, 0 ,0); //此處可以用? 'A', (BYTE)65, 用'a'不起作用.
??? keybd_event('A', (BYTE)0, KEYEVENTF_KEYUP,0);
??? keybd_event(VK_CONTROL, (BYTE)0, KEYEVENTF_KEYUP,0);

3) 執行某些特殊的鍵,比如數字鍵,大小寫,下面是數字鍵的例子
??? bool bState=true;?? //true為按下NumLock,false反之
??? BYTE keyState[256];

??? GetKeyboardState((LPBYTE)&keyState);
??? if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
??????? (!bState && (keyState[VK_NUMLOCK] & 1)) )
??? {
??????? // Simulate a key press
??????? keybd_event( VK_NUMLOCK,
??????????? 0x45,
??????????? KEYEVENTF_EXTENDEDKEY | 0,
??????????? 0 );
???????
??????? // Simulate a key release
??????? keybd_event( VK_NUMLOCK,
??????????? 0x45,
??????????? KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
??????????? 0);
??? }

4) 你想CTRL+ALT+DELETE三鍵一起按下,
??? keybd_event(VK_CONTROL, 0, 0 ,0);
??? keybd_event(VK_MENU,0, 0 ,0);
??? keybd_event(VK_DELETE,0, 0 ,0);

??? keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP ,0);
??? keybd_event(VK_MENU,0, KEYEVENTF_KEYUP ,0);
??? keybd_event(VK_DELETE,0, KEYEVENTF_KEYUP ,0);
呵呵,這樣不會成功呀,因為這幾個鍵直接是操作系統來截獲執行的,而模擬鍵盤只能發向應用程序,所以這種方法不行的(想顯示鎖定對話框,用??? LockWorkStation();)

5) Window2000/NT/XP已經不提倡用這個函數了,上面的方法只是為了讓大家開闊一下思路,怎么替代呢,呵呵,看下面,所以上面的所有代碼都可以用這個來完成
?? //2000下用這個代替 ,包含 "winable.h"
??? INPUT input[4];
??? memset(input, 0, sizeof(input));

??? input[0].type = input[1].type = input[2].type = input[3].type = INPUT_KEYBOARD;

??? input[0].ki.wVk? = input[3].ki.wVk = VK_LWIN;
??? input[1].ki.wVk? = input[2].ki.wVk = 'R';

???
??? //接下來釋放它,這一點很重要。
??? input[2].ki.dwFlags = input[3].ki.dwFlags = KEYEVENTF_KEYUP;
??? input[0].ki.time = input[1].ki.time = input[2].ki.time = input[3].ki.time = GetTickCount();

??? SendInput(4, input, sizeof(INPUT));

感覺比那個有點羅索,呵呵。

====================

附WIN鍵的部分快捷鍵:

WIN鍵+D=快速的切到桌面,再次點擊返回

WIN鍵+E=快速打開資源管理器

WIN鍵+R=“運行”。

WIN鍵+M=全部視窗最小化。

WIN鍵+Shift+M=取消全部視窗最小化。

WIN鍵+F1=Help。

WIN鍵+F=“尋找”。

WIN鍵+Ctrl+F=顯示“查找電腦”。

WIN鍵+Tab=切換工作列的程式。

WIN鍵+Break=顯示系統內容。

總結

以上是生活随笔為你收集整理的玩转keybd_event的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。