zoukankan      html  css  js  c++  java
  • 自动单击程序

    我写的程序交给测试组测试时, 经常需要自动单击功能-.-于是开发了这么一个自动单击工具.

    包括的功能有:

    1.设置鼠标

    2.自动找按钮

    3.设置触发频率.

    工程见: https://files.cnblogs.com/lin1270/AutoClick_ex.zip

    2012_04_19 最新修改:

    1. 支持C#按钮单击。

    2. 支持复选框、单选框、Static控件等单击。

    C#的Link控件有问题,改成如下判断了。附件的代码并没有更改---

    if (hwndParent != NULL && IsWindow (hwndParent)) {
                        DWORD dwStyle = GetWindowLong ((*it)->ctrl.hwnd, GWL_STYLE);
                        if (dwStyle & BS_PUSHBUTTON) {
                            PostMessage (hwndParent, WM_COMMAND, MAKEWPARAM (GetWindowLong ((*it)->ctrl.hwnd, GWL_ID),BN_CLICKED), (LPARAM)(*it)->ctrl.hwnd);
                        } else if ((dwStyle & 0x0000000D) == 0x0000000D) {
                            RECT rc;
                            GetWindowRect((*it)->ctrl.hwnd, &rc);
    
                            POINT ptOrigin;
                            GetCursorPos(&ptOrigin);
    
                            INPUT inputs = {0};
                            inputs.type = INPUT_MOUSE;
                            inputs.mi.dx = (rc.left + (rc.right - rc.left) / 2) * 65535 / GetSystemMetrics (SM_CXSCREEN);
                            inputs.mi.dy = (rc.top +  (rc.bottom - rc.top) / 2) * 65535 / GetSystemMetrics (SM_CYSCREEN);
                            inputs.mi.mouseData = 0;
    
                            inputs.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
                            SendInput (1, &inputs, sizeof (INPUT));
                            inputs.mi.dwFlags = MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE;
                            SendInput (1, &inputs, sizeof (INPUT));
                            inputs.mi.dwFlags = MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE;
                            SendInput (1, &inputs, sizeof (INPUT));
    
    
                            //SendMessage ((*it)->ctrl.hwnd, WM_LBUTTONDOWN, 0, 0);
                            //SendMessage ((*it)->ctrl.hwnd, WM_LBUTTONUP,   0, 0);
                            
                            memset (&inputs, 0, sizeof (INPUT));
                            inputs.type = INPUT_MOUSE;
                            inputs.mi.dx = ptOrigin.x  * 65535 / GetSystemMetrics (SM_CXSCREEN);
                            inputs.mi.dy = ptOrigin.y * 65535 / GetSystemMetrics (SM_CYSCREEN);
                            inputs.mi.mouseData = 0;
                            inputs.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
                            SendInput (1, &inputs, sizeof (INPUT));
    
                        } else {
                            PostMessage ((*it)->ctrl.hwnd, WM_LBUTTONDOWN, 0, 0);
                            PostMessage ((*it)->ctrl.hwnd, WM_LBUTTONUP,   0, 0);
                        }
                    } else {
                        /**
                         * 如果没有父窗口的话, 还是发一个左键消息吧, 以免遗漏
                         */
                        PostMessage ((*it)->ctrl.hwnd, WM_LBUTTONDOWN, 0, 0);
                        PostMessage ((*it)->ctrl.hwnd, WM_LBUTTONUP,   0, 0);
                    }
  • 相关阅读:
    hdu 4739 Zhuge Liang's Mines DFS
    Uva 12304
    三角形的心
    最小路径覆盖的理解
    Codeforces Round #192 (Div. 2)
    Uva 11796 Dog Distance
    laravel框架session使用教程
    php session跨页面传递 session值丢失问题
    PHP 5.4中的traits特性
    PHP5.3 goto操作符介绍
  • 原文地址:https://www.cnblogs.com/lin1270/p/2273530.html
Copyright © 2011-2022 走看看