我要编写一个程序,这个程序的功能是点击另外一个程序的按钮.
怎么操作呀
大家最好有个例子.

解决方案 »

  1.   

    使用mouse_event,或者直接发送消息,参考:
    ::PostMessage(this->GetSafeHwnd(),WM_COMMAND  ,MAKEWPARAM(IDC_BTN_FILE,BN_CLICKED),MAKELPARAM(GetDlgItem(IDC_BTN_FILE)->GetSafeHwnd(),0));
      

  2.   

    楼上的不对哦,他要是有源代码还会这么费劲做程序点按钮吗?你那代码你能在源程序里改!
    这个嘛基本很难,我问你那个按钮有快捷毽没,有的话可以先枚举出所有的进程,然后选中那个程序,
    然后向那个程序发送消息WM_ACTIVE,是那个程序成为前台当前程序,最后发送WM_KEYDOWN消息,SendMessage(WM_KEYDOWN,VK_XXX,0),实现软键盘键入快捷健。
    枚举进程用的api函数有:CreateToolhelp32Snapshot、Process32First、Process32Next和一个结构
    typedef struct tagPROCESSENTRY32 { 
      DWORD dwSize; 
      DWORD cntUsage; 
      DWORD th32ProcessID; 
      ULONG_PTR th32DefaultHeapID; 
      DWORD th32ModuleID; 
      DWORD cntThreads; 
      DWORD th32ParentProcessID; 
      LONG  pcPriClassBase; 
      DWORD dwFlags; 
      TCHAR szExeFile[MAX_PATH]; 
    } PROCESSENTRY32; 
    typedef PROCESSENTRY32 *PPROCESSENTRY32;
      

  3.   

    HWND hWnd = ::FindWindow(NULL, "窗口名");
    if(hWnd!= NULL)
    {
        PostMessage(hWnd, ... )
    }至于具体发送什么消息可以用Spy++观察一下
      

  4.   

    HWND hParent = ::FindWindow( NULL,"按钮所在窗口名" );
    ::GetWindow( hParent,GW_CHILD );
    ::GetWindow( hChild,GW_HWNDFIRST );    
    ::GetWindow( hChildFirst,GW_HWNDNEXT );
    通过另外一个程序名得到主窗口句柄,然后枚举全部窗口句柄,
    找到你想要的按钮,对它的句柄发消息。没试过。