中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

模擬鼠標(biāo)操作的C++實(shí)現(xiàn)代碼

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
  關(guān)于鼠標(biāo)模擬程序應(yīng)用不算少見(jiàn),在游戲外掛或者一些操作頻繁位置確定的程序上應(yīng)用往往有奇效。

    比較舊的API是mouse_event,本人一開(kāi)始也用這個(gè)在搞,不過(guò)后來(lái)才看到新的API在操作上更加統(tǒng)一,稍作改動(dòng)便也能模擬鍵盤(pán)輸入(兩者往往要一起應(yīng)用),所以就用新的API來(lái)做。對(duì)了,新的API名為SendInput。

    下面就不說(shuō)廢話了,直接上代碼,本代碼是運(yùn)行在MFC工程上的,如要需要在控制臺(tái)或者其他工程上運(yùn)行要包含必須的頭文件。此外,本程序只能模擬一般的鼠標(biāo)操作,對(duì)于一些防外掛的程序進(jìn)行點(diǎn)擊需要驅(qū)動(dòng)級(jí)的模擬。

    模擬鼠標(biāo)各動(dòng)作函數(shù)

    void MouseMove(int x, int y)//鼠標(biāo)移動(dòng)到指定位置  
    {  
        double fScreenWidth = ::GetSystemMetrics(SM_CXSCREEN) - 1;//獲取屏幕分辨率寬度  
        double fScreenHeight = ::GetSystemMetrics(SM_CYSCREEN) - 1;//獲取屏幕分辨率高度  
        double fx = x*(65535.0f / fScreenWidth);  
        double fy = y*(65535.0f / fScreenHeight);  
        INPUT  Input = { 0 };  
        Input.type = INPUT_MOUSE;  
        Input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;  
        Input.mi.dx = fx;  
        Input.mi.dy = fy;  
        SendInput(1, &Input, sizeof(INPUT));  
    }  
      
    void MouseLeftDown()//鼠標(biāo)左鍵按下  
    {  
        INPUT  Input = { 0 };  
        Input.type = INPUT_MOUSE;  
        Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;  
        SendInput(1, &Input, sizeof(INPUT));  
    }  
      
    void MouseLeftUp()//鼠標(biāo)左鍵放開(kāi)  
    {  
        INPUT  Input = { 0 };  
        Input.type = INPUT_MOUSE;  
        Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;  
        SendInput(1, &Input, sizeof(INPUT));  
          
    }  
      
    void MouseRightDown()//鼠標(biāo)右鍵按下  
    {  
        INPUT  Input = { 0 };  
        Input.type = INPUT_MOUSE;  
        Input.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN;  
        SendInput(1, &Input, sizeof(INPUT));  
    }  
      
    void MouseRightUp()//鼠標(biāo)右鍵放開(kāi)  
    {  
        INPUT  Input = { 0 };  
        Input.type = INPUT_MOUSE;  
        Input.mi.dwFlags = MOUSEEVENTF_RIGHTUP;  
        SendInput(1, &Input, sizeof(INPUT));  
    }  

  各動(dòng)作函數(shù)配合完成鼠標(biāo)各種操作
//模擬鼠標(biāo)拖動(dòng)框選  
ShowWindow(SW_SHOWMINIMIZED);//窗體最小化  
POINT mypoint;  
GetCursorPos(&mypoint);//獲取鼠標(biāo)當(dāng)前所在位置  
MouseMove(800, 1000);//鼠標(biāo)移動(dòng)到指定位置  
MouseLeftDown();//鼠標(biāo)左鍵點(diǎn)下  
MouseMove(10, 10);//鼠標(biāo)拖動(dòng)到指定位置  
Sleep(10);//這里需要等待一下,不然拖動(dòng)會(huì)沒(méi)有效果  
MouseLeftUp();//鼠標(biāo)釋放  
MouseMove(mypoint.x, mypoint.y);//將鼠標(biāo)放回所在的位置

    //模擬鼠標(biāo)右鍵按下并釋放  
    ShowWindow(SW_SHOWMINIMIZED);//窗體最小化  
    MouseRightDown();  
    Sleep(10);  
    MouseRightUp();  

標(biāo)簽: 代碼

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:Android列出系統(tǒng)中所有安裝的app的信息

下一篇: iOS獲取網(wǎng)絡(luò)的最新方法