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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

模拟键盘输入和鼠标输入

發(fā)布時(shí)間:2024/5/14 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模拟键盘输入和鼠标输入 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在Windows大行其道的今天,windows界面程序受到廣大用戶的歡迎。對(duì)這些程序的操作不外乎兩種,鍵盤(pán)輸入控制和鼠標(biāo)輸入控制。有時(shí),對(duì)于繁雜的,或重復(fù)性的輸入操作,我們能否通過(guò)編制程序來(lái)代替手工輸入,而用程序來(lái)模擬鍵盤(pán)及鼠標(biāo)的輸入呢?答案是肯定的。這里主要是通過(guò)兩個(gè)Windows API函數(shù)來(lái)實(shí)現(xiàn)的。下面以 VC++為例來(lái)介紹一下如何實(shí)現(xiàn)這兩個(gè)功能。

  模擬鍵盤(pán)我們用Keybd_event這個(gè)api函數(shù),模擬鼠標(biāo)按鍵用mouse_event函數(shù)。在VC里調(diào)用api函數(shù)是既簡(jiǎn)單又方便不過(guò)的事了。

  1. Keybd_event能觸發(fā)一個(gè)按鍵事件,也就是說(shuō)回產(chǎn)生一個(gè)WM_KEYDOWN或WM_KEYUP消息。當(dāng)然也可以用產(chǎn)生這兩個(gè)消息來(lái)模擬按鍵,但是沒(méi)有直接用這個(gè)函數(shù)方便。Keybd_event共有四個(gè)參數(shù),第一個(gè)為按鍵的虛擬鍵值,如回車鍵為vk_return。第二個(gè)參數(shù)為掃描碼,一般不用設(shè)置,用0代替就行。第三個(gè)參數(shù)為選項(xiàng)標(biāo)志,如果為keydown則置0即可,如果為keyup則設(shè)成“KEYEVENTF_KEYUP”,第四個(gè)參數(shù)一般也是置0即可。

  示例:

    CWnd *pWnd = FindWindow("Notepad", NULL);
    if (pWnd->GetSafeHwnd())
    {
      pWnd->ShowWindow(SW_NORMAL);
      pWnd->SetForegroundWindow();
     ???? keybd_event(VK_CONTROL, 0, 0 ,0);
      keybd_event('E', 0, 0 ,0);
      keybd_event('E', 0, KEYEVENTF_KEYUP ,0);
      keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP,0);
}

?   2.mouse_event最好配合SetCursorPos(x,y)函數(shù)一起使用,與Keybd_event類似,mouse_event有五個(gè)參數(shù),第一個(gè)為選項(xiàng)標(biāo)志,為MOUSEEVENTF_LEFTDOWN時(shí)表示左鍵按下,為MOUSEEVENTF_LEFTUP表示左鍵松開(kāi),向系統(tǒng)發(fā)送相應(yīng)消息。第二三個(gè)參數(shù)分別表示x,y相對(duì)位置。

  示例:

    POINT lpPoint;
    GetCursorPos(&lpPoint);
    SetCursorPos(lpPoint.x, lpPoint.y);
    mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);

?????PS:? 1.對(duì)于程序來(lái)說(shuō),關(guān)鍵是要找到接收消息的窗口句柄。

???????????? 2.不管是模擬鍵盤(pán)還是鼠標(biāo)事件,都要注意還原,即按下鍵之后要松開(kāi),一個(gè)keydown對(duì)應(yīng)一個(gè)keyup;鼠標(biāo)單擊完也要松開(kāi),不然可能影響程序的功能。

附:

::mouse_event(1) 模擬鼠標(biāo)動(dòng)作API函數(shù)mouse_event,它可以實(shí)現(xiàn)模擬鼠標(biāo)按下和放開(kāi)等動(dòng)作。
VOID mouse_event(
DWORD dwFlags, // 鼠標(biāo)動(dòng)作標(biāo)識(shí)。
DWORD dx, // 鼠標(biāo)水平方向位置。
DWORD dy, // 鼠標(biāo)垂直方向位置。
DWORD dwData, // 鼠標(biāo)輪子轉(zhuǎn)動(dòng)的數(shù)量。
DWORD dwExtraInfo // 一個(gè)關(guān)聯(lián)鼠標(biāo)動(dòng)作輔加信息。
);
其中,dwFlags表示了各種各樣的鼠標(biāo)動(dòng)作和點(diǎn)擊活動(dòng),它的常用取值如下:
MOUSEEVENTF_MOVE 表示模擬鼠標(biāo)移動(dòng)事件。
MOUSEEVENTF_LEFTDOWN 表示模擬按下鼠標(biāo)左鍵。
MOUSEEVENTF_LEFTUP 表示模擬放開(kāi)鼠標(biāo)左鍵。
MOUSEEVENTF_RIGHTDOWN 表示模擬按下鼠標(biāo)右鍵。
MOUSEEVENTF_RIGHTUP 表示模擬放開(kāi)鼠標(biāo)右鍵。
MOUSEEVENTF_MIDDLEDOWN 表示模擬按下鼠標(biāo)中鍵。
MOUSEEVENTF_MIDDLEUP 表示模擬放開(kāi)鼠標(biāo)中鍵。

?

?

符號(hào)常量 十六進(jìn)制值 指定的鼠標(biāo)或鍵盤(pán)按鍵
VK_LBUTTON 01 鼠標(biāo)左鍵
VK_RBUTTON 02 鼠標(biāo)右鍵
VK_CANCEL 03 Control-break 過(guò)程
VK_MBUTTON 04 鼠標(biāo)中鍵
VK_BACK 08 BACKSPACE 鍵
VK_TAB 09 TAB 鍵
VK_CLEAR 0C CLEAR 鍵
VK_RETURN 0D ENTER 鍵
VK_SHIFT 10 SHIFT 鍵
VK_CONTROL 11 CTRL 鍵
VK_MENU 12 ALT 鍵
VK_PAUSE 13 PAUSE 鍵
VK_CAPITAL 14 CAPS LOCK 鍵
VK_ESCAPE 1B ESC 鍵
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP 鍵
VK_NEXT 22 PAGE DOWN 鍵
VK_END 23 END 鍵
VK_HOME 24 HOME 鍵
VK_LEFT 25 LEFT ARROW 鍵
VK_UP 26 UP ARROW 鍵
VK_RIGHT 27 RIGHT ARROW 鍵
VK_DOWN 28 DOWN ARROW 鍵
VK_SELECT 29 SELECT 鍵
VK_EXECUTE 2B EXECUTE 鍵
VK_SNAPSHOT 2C PRINT SCREEN鍵(用于Windows 3.0及以后版本)
VK_INSERT 2D INS 鍵
VK_DELETE 2E DEL 鍵
VK_HELP 2F HELP 鍵
///
對(duì)于字母鍵和非小鍵盤(pán)上的數(shù)字鍵,直接在單引號(hào)中加入該鍵就行.
比如:a鍵:'A'
1鍵:'1'
//
VK_LWIN 5B Left Windows 鍵 (Microsoft自然鍵盤(pán))
VK_RWIN 5C Right Windows 鍵 (Microsoft自然鍵盤(pán))
VK_APPS 5D Applications 鍵 (Microsoft自然鍵盤(pán))
VK_NUMPAD0 60 數(shù)字小鍵盤(pán)上的 0 鍵
VK_NUMPAD1 61 數(shù)字小鍵盤(pán)上的 1 鍵
VK_NUMPAD2 62 數(shù)字小鍵盤(pán)上的 2 鍵
VK_NUMPAD3 63 數(shù)字小鍵盤(pán)上的 3 鍵
VK_NUMPAD4 64 數(shù)字小鍵盤(pán)上的 4 鍵
VK_NUMPAD5 65 數(shù)字小鍵盤(pán)上的 5 鍵
VK_NUMPAD6 66 數(shù)字小鍵盤(pán)上的 6 鍵
VK_NUMPAD7 67 數(shù)字小鍵盤(pán)上的 7 鍵
VK_NUMPAD8 68 數(shù)字小鍵盤(pán)上的 8 鍵
VK_NUMPAD9 69 數(shù)字小鍵盤(pán)上的 9 鍵
VK_MULTIPLY 6A Multiply 鍵
VK_ADD 6B Add 鍵
VK_SEPARATOR 6C Separator 鍵
VK_SUBTRACT 6D Subtract 鍵
VK_DECIMAL 6E Decimal 鍵
VK_DIVIDE 6F Divide 鍵
VK_F1 70 F1 鍵
VK_F2 71 F2 鍵
VK_F3 72 F3 鍵
VK_F4 73 F4 鍵
VK_F5 74 F5 鍵
VK_F6 75 F6 鍵
VK_F7 76 F7 鍵
VK_F8 77 F8 鍵
VK_F9 78 F9 鍵
VK_F10 79 F10 鍵
VK_F11 7A F11 鍵
VK_F12 7B F12 鍵
VK_F13 7C F13 鍵
VK_F14 7D F14 鍵
VK_F15 7E F15 鍵
VK_F16 7F F16 鍵
VK_F17 80H F17 鍵
VK_F18 81H F18 鍵
VK_F19 82H F19 鍵
VK_F20 83H F20 鍵
VK_F21 84H F21 鍵
VK_F22 85H F22 鍵
VK_F23 86H F23 鍵
VK_F24 87H F24 鍵
VK_NUMLOCK 90 NUM LOCK 鍵
VK_SCROLL 91 SCROLL LOCK 鍵
VK_ATTN F6 Attn 鍵
VK_CRSEL F7 CrSel 鍵
VK_EXSEL F8 ExSel 鍵
VK_EREOF F9 Erase EOF 鍵
VK_PLAY FA Play 鍵
VK_ZOOM FB Zoom 鍵
VK_OEM_CLEAR FE Clear 鍵

?

總結(jié)

以上是生活随笔為你收集整理的模拟键盘输入和鼠标输入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。