怎么能够实现,启动一个程序,然后模拟点击这个程序界面中的某个BUTTON,非常棘手,请大家帮忙,谢谢!
现在只知道这个EXE的名字,知道BUTTON的名字,知道这个EXE启动后窗口的名字,其他的都不知道,请问该怎么实现,谢谢!
急用啊!
[email protected]

解决方案 »

  1.   

    CreateProcess
    FindWindow
    GetWindowRect
    mouse_event或者SendInput
      

  2.   

    先用FindWindow扫描到这个窗口
    再用FindWindowEx扫描到按钮(也就是个子窗口)
    取得按钮位置,模拟鼠标动作(mouse_event)
    很简单
      

  3.   

    补充楼上,
    可以用SendMessage
    另:
    http://www.vckbase.com/document/viewdoc/?id=771
      

  4.   

    需要知道窗口的类名及标题名称和按钮的ID,这些都可以用SPY++得到。
    HWND hWnd = ::FindWindow(szClass, szTitle);
    HWND hWndButton = ::GetDlgItem(hWnd, nIDButton);
    ::SendMessage(hWnd, WM_COMMAND, nIDButton, hWndButton);
      

  5.   

    还有一个小问题,在程序中调用一个.BAT文件,怎么知道这个BAT文件已经执行完毕了呢,谢谢!
      

  6.   

    你就写个小程序,打开,释放一个固定名称的互赤体,然后把他加到。bat总,你的程序就监测互斥体好了
      

  7.   

    知道按钮位置就好办,用mouse_event
      

  8.   

    我曾经做了个点击POPO的程序,但是他那个窗口不是常用的窗口类生成的,用上面的FindWindow GetDlgItem之类的方法得不到他的HWND ,也就没有办法发消息了,最后只能把用上面说的mouse_event方法,自己测算按钮的位置,再点击。
        但这样做有些不好的地方,首先,被点击的程序要显示在当前窗口才行,其二精确度不是太高,响应时间也有点慢。
        我做那个东西,是想利用POPO的免费短信功能来自动发送短信(比如说要是我不在电脑边,而QQ又有消息,那么就可以通过POPO转发短信)
        以上是一种设想,由于我法很好的控制POPO所以还没能实现呢。
      

  9.   

    //枚举子窗口
    BOOL CALLBACK EnumChildProc(HWND hwndChild, LPARAM lParam) 

    char buf[10]; GetWindowText(hwndChild,buf,10); if(strcmp(buf,"7") == 0) //按钮标题
    {
    ::PostMessage(hwndChild,WM_LBUTTONDOWN,0,0);
    ::PostMessage(hwndChild,WM_LBUTTONUP,0,0);
    }
     
        return TRUE;
    }调用代码STARTUPINFO si;
    PROCESS_INFORMATION pi;
    memset(&si,0,sizeof(si));
    si.cb = sizeof(si);
    memset(&pi,0,sizeof(pi));
    //创建进程
    CreateProcess("c:\\windows\\system32\\calc.exe",NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);Sleep(500);HWND hwnd = ::FindWindow(NULL,"计算器");ASSERT(hwnd);EnumChildWindows(hwnd, EnumChildProc, 0); //也可以使用FindWindowEx
      

  10.   

    谢谢,不过那个在程序中调用一个.BAT文件,怎么知道这个BAT文件已经执行完毕了的问题,谁帮忙给看看啊,谢谢
      

  11.   

    估计你这个窗口应该是进程下的主窗口吧,否则你首先要点开这个窗口了
    罗列进程窗口,找到这个窗口,找子窗口得到button的ID,然后向窗口发送WM_COMMAND,BUTTONID消息即可
      

  12.   

    就是不会在.BAT里添加发送消息什么的,谁能说的详细一点呢,谢谢
      

  13.   

    获取按钮句柄,然后SendMessage
      

  14.   

    谢谢,再来试试,我问的是怎么在.BAT里面发送消息