MFC-mouse_event鼠标事件

 

    HWND hDlgWnd = ::FindWindow(_T("#32770"), _T("测试窗口"));
    if (hDlgWnd) {
        ::ShowWindow(hDlgWnd, SW_NORMAL);
        ::SetForegroundWindow(hDlgWnd);
        HWND hBtn = ::GetDlgItem(hDlgWnd, 0x3E8);
        //0x3E8 获取方法看:https://www.cnblogs.com/liming19680104/p/17198189.html 
        CRect mRect;
        ::GetWindowRect(hBtn, &mRect);
        SetCursorPos(mRect.left + 3, mRect.top + 3);

        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//模拟鼠标动作
        /*
        参数1:DWORD dwFlags  鼠标动作标志。此参数可以是下列值的某种组合:
                MOUSEEVENTF_ABSOLUTE== 0x8000   dX和dY参数是绝对坐标。如果不设置,用相对数据:相对于上次位置的改动位置
                MOUSEEVENTF_MOVE= 0x0001        鼠标移动
                MOUSEEVENTF_LEFTDOWN = 0x0002;  模拟鼠标左键按下
                MOUSEEVENTF_LEFTUP = 0x0004;    模拟鼠标左键抬起
                MOUSEEVENTF_RIGHTDOWN = 0x0008; 模拟鼠标右键按下
                MOUSEEVENTF_RIGHTUP = 0x0010;   模拟鼠标右键抬起
                MOUSEEVENTF_MIDDLEDOWN = 0x0020; 模拟鼠标中键按下
                MOUSEEVENTF_MIDDLEUP = 0x0040;   模拟鼠标中键抬起
                MOUSEEVENTF_WHEEL    滚动鼠标轮,如果鼠标有一个滚轮。滚动的数量由dwData给出
        参数2:DWORD  dx  指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置
        参数3:DWORD  dy  指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置
        参数4:DWORD  dwData  如果dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。
                    正值表明鼠标轮向前转动,即远离用户的方向;负值表明鼠标轮向后转动,即朝向用户。
                    一个轮击定义为WHEEL_DELTA,即120。如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零
        参数5:ULONG_PTR dwExtraInfo  指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息

        返回值:此函数无返回值

        */
        Sleep(100);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

    }

 

测试窗口下载:

链接:https://pan.baidu.com/s/1s_5xvRpTUZtQDKPZ_INSmQ
提取码:6666

 

 

 

 

posted @ 2023-04-14 10:55  天子骄龙  阅读(585)  评论(0)    收藏  举报