最近项目有这样一个问题,由vs2008开发的,需要代码来打开另外一个应用程序,并向这个应用程序的主界面的两个输入框输入用户名和密码,然后又自动点一个确定按钮,这整个操作过程都是自动实现,该如何完成??

解决方案 »

  1.   

    ShellExecute的功能是运行一个外部程序
    输入框输入用户名和密码,然后又自动点一个确定按钮,获得窗口句柄就可以了
      

  2.   

    重点是获得窗口的句柄,可以借助SPY++之类的工具先看看目标窗口的类名,然后用FindWindows之类的函数找到句柄,接着用SendMessage投递消息来发送文本内容和WM_LBUTTONDOWN, WM_LBUTTONUP来模拟鼠标点击操作
      

  3.   

    ShellExecute函数是vs中的函数吗,这个msdn中没有,打开窗口之后这样自动传递用户名和密码,用什么函数呢?如果是第三方的程序,只知道有这么一个窗口,完全不知道两个输入框和按钮的名字,怎么样实现这些操作自动话?
      

  4.   

    ShellExecute函数是vs中的函数吗,这个msdn中没有,
    =======================================
    ShellExectue是API,MSDN中一定有的,当然你用CreateProcess也可以创建外部进程。打开窗口之后这样自动传递用户名和密码,用什么函数呢?如果是第三方的程序,只知道有这么一个窗口,完全不知道两个输入框和按钮的名字,怎么样实现这些操作自动话?
    ============
    你可以用FindWindow先去找到这个窗口的HWND,然后用FindWindowEx去找两个输入框以及按钮,找到后向它们发送消息,对输入框发WM_SETTEXT消息,对于按钮发送WM_LBUTTONDOWN消息就行了。
      

  5.   

    遍历 听说过没有
    用findwindow findwindowex遍历窗口
    拿到句柄后想干啥就干啥
      

  6.   

    这个我明天再试试,wltg2001的方法看起来不错!
      

  7.   


    ShellExectue可以传递参数
    用cmdline得到传递进来的参数
      

  8.   

    我想楼主问的关键是如何输入用户名和密码然后点确定。这要看是什么程序的密码框了。如果是word啊,excel啊。用setwindowtext就可以,然后用keyboard_event模拟按enter按键,或者是mouse_event模拟点输入。如果是qq窗口的话,输入密码就要用keyboard_evnet模拟输入了,其他同上!
      

  9.   

    CreateProcess()启动外部程序;
    EnumWindows()枚举窗口,EnumChildWindows找到子窗口,然后SendMessage(WM_SETTEXT,...);
    SendInput()模拟鼠标或者键盘输入
      

  10.   

    我用WinExec打开窗口,也可以用findwindowEx找到有标题的控件的句柄,但是如果是edit控件,是没有标题的,这样的话怎么获得它的句柄,还有设置edit控件的值呢?sendmessage的参数只有父句柄,子句柄,还有wParam,lParam,如果只知道控件的id,比如edit2,怎么可以给它设置值呢?