最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C++模擬鼠標(biāo)點(diǎn)擊和鍵盤輸入的操作 mouse_event & keybd_event

2020-03-04 16:50 作者:Love丶伊卡洛斯  | 我要投稿


## 實(shí)際運(yùn)用,視頻講解

視頻傳送門:[點(diǎn)我]

## 相關(guān)環(huán)境

操作系統(tǒng):Win10 企業(yè)版
編譯環(huán)境:MinGW

## 相關(guān)說明

參考資料:[windows API](http://www.office-cn.net/t/api/index.html?web.htm),里面很詳細(xì),愛死了
使用的Windows API中的 **mouse_event()****keybd_event()**。

### mouse_event

private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);


簡單寫個(gè)實(shí)例,參考 [mouse_event() 控制鼠標(biāo)操作](https://blog.csdn.net/hellokandy/article/details/94031796)

```cpp
#include <Windows.h>
1、這里是鼠標(biāo)左鍵按下和松開兩個(gè)事件的組合即一次單擊:
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )


2、模擬鼠標(biāo)右鍵單擊事件:
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 )


3、兩次連續(xù)的鼠標(biāo)左鍵單擊事件 構(gòu)成一次鼠標(biāo)雙擊事件:
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )


4、使用絕對(duì)坐標(biāo)
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0 )
需要說明的是,如果沒有使用MOUSEEVENTF_ABSOLUTE,函數(shù)默認(rèn)的是相對(duì)于鼠標(biāo)當(dāng)前位置的點(diǎn),如果dx,和dy,用0,0表示,這函數(shù)認(rèn)為是當(dāng)前鼠標(biāo)所在的點(diǎn)。


5、直接設(shè)定絕對(duì)坐標(biāo)并單擊
mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 屏幕寬, Y * 65536 / 屏幕高, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 屏幕寬, Y * 65536 / 屏幕高, 0, 0);
其中X,Y分別是你要點(diǎn)擊的點(diǎn)的橫坐標(biāo)和縱坐標(biāo)
ps:求屏幕大小,參考 https://blog.csdn.net/yp18792574062/article/details/88351342

#include <Windows.h>
// 帶標(biāo)題欄和菜單欄
int width = GetSystemMetrics(SM_CXSCREEN);
int height = GetSystemMetrics(SM_CYSCREEN);
```


## keybd_event

```cpp
VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo);
```



下圖轉(zhuǎn)自:[keybd_event模擬鍵盤輸入](https://blog.csdn.net/polyhedronx/article/details/81988948)



簡單實(shí)例

```cpp
#include <Windows.h>
keybd_event(16,0,0,0);//按下Shift鍵
keybd_event('A',0,0,0);//按下a鍵
keybd_event('A',0,KEYEVENTF_KEYUP,0);//松開a鍵
keybd_event(16,0,KEYEVENTF_KEYUP,0);//松開Shift鍵
```

## 實(shí)際案例

實(shí)現(xiàn)效果:來回走動(dòng),并按 ‘q’鍵。ps:**管理員運(yùn)行**
main.cpp

```cpp
// 編譯 g++ main.cpp,管理員運(yùn)行 a.exe
#include <Windows.h>
#include <iostream>
using namespace std;

int main() {
// 獲取帶標(biāo)題欄和菜單欄即全屏像素大小
int width = GetSystemMetrics(SM_CXSCREEN);
int height = GetSystemMetrics(SM_CYSCREEN);
// 睡眠5s,準(zhǔn)備時(shí)間
Sleep(5000);
// 死循環(huán)
while (1)
{
// 移動(dòng)到絕對(duì)位置右擊
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP | MOUSEEVENTF_MOVE, 1170 * 65535 / width, 362 * 65535 / height, 0, 0 );
Sleep(3500);

// 按下'q'鍵
keybd_event(81, 0, 0, 0);
keybd_event(81, 0, KEYEVENTF_KEYUP, 0);
Sleep(500);

// 移動(dòng)到絕對(duì)位置右擊
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTDOWN ?| MOUSEEVENTF_RIGHTUP | MOUSEEVENTF_MOVE, 679 * 65535 / width, 760 * 65535 / height, 0, 0 );
Sleep(3500);

}

//system("pasue");
return 0;
}
```


### 獲取鼠標(biāo)當(dāng)前位置

```cpp
#include <Windows.h>
#include <iostream>
using namespace std;

int main() {
// 死循環(huán)
while (1)
{
POINT pt = {0,0};
GetCursorPos(&pt);
printf("x=%d,y=%d\n", pt.x,pt.y);
Sleep(3000);
}

//system("pasue");
return 0;
}
```


C++模擬鼠標(biāo)點(diǎn)擊和鍵盤輸入的操作 mouse_event & keybd_event的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
逊克县| 玛多县| 红桥区| 中牟县| 鄄城县| 铜山县| 南漳县| 建平县| 东乡族自治县| 林口县| 开鲁县| 皋兰县| 辽阳市| 子洲县| 屏边| 梁平县| 姚安县| 洛宁县| 县级市| 永宁县| 宜春市| 屏山县| 望江县| 永靖县| 龙口市| 乌鲁木齐市| 安龙县| 临汾市| 云梦县| 石泉县| 杭锦旗| 三河市| 滨州市| 鄯善县| 安徽省| 得荣县| 乳源| 龙岩市| 揭西县| 大厂| 密山市|