日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C 模擬鼠標(biāo)點擊和鍵盤輸入的操作 mouse

 覓書時代 2021-04-11

實際運用,視頻講解

python和C++實現(xiàn)模擬鍵鼠操作實測說明【300英雄】

視頻傳送門:點我

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

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

相關(guān)說明

參考資料:windows API,里面很詳細,愛死了
使用的Windows API中的 mouse_event()keybd_event()。

mouse_event

private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
在這里插入圖片描述
簡單寫個實例,參考 mouse_event() 控制鼠標(biāo)操作

#include <Windows.h> 1、這里是鼠標(biāo)左鍵按下和松開兩個事件的組合即一次單擊: 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、使用絕對坐標(biāo) mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0 ) 需要說明的是,如果沒有使用MOUSEEVENTF_ABSOLUTE,函數(shù)默認(rèn)的是相對于鼠標(biāo)當(dāng)前位置的點,如果dx,和dy,用00表示,這函數(shù)認(rèn)為是當(dāng)前鼠標(biāo)所在的點。 5、直接設(shè)定絕對坐標(biāo)并單擊 mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 屏幕寬, Y * 65536 / 屏幕高, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 屏幕寬, Y * 65536 / 屏幕高, 0, 0); 其中X,Y分別是你要點擊的點的橫坐標(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);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

keybd_event

VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo);
  • 1
  • 1

在這里插入圖片描述
下圖轉(zhuǎn)自:keybd_event模擬鍵盤輸入
在這里插入圖片描述
簡單實例

#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鍵
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

實際案例

實現(xiàn)效果:來回走動,并按 'q’鍵。ps:管理員運行
main.cpp

// 編譯 g++ main.cpp,管理員運行 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)備時間
Sleep(5000);
// 死循環(huán)
while (1) 
{
// 移動到絕對位置右擊
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);

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

}

//system('pasue');
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

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

#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('pause'); return 0; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多