我的程序要在后台调用一个dos程序,这个dos程序在运行的时候需要输入一个密码,然后回车才能继续。我原来是先把这个dos窗口隐藏shell出来,然后把它BringWindowToTop变成当前窗口,用keybd_event发送键盘码来完成的。
上面的情况只要客户不在1、2秒内用鼠标点击其它东西,一般都能顺利完成。可问题是一旦点击了其它窗口,使我这个隐藏的dos窗口不再是当前窗口了,那就不行了。所以我目前弄的方法,绝对不是可靠的方法。(虽然我后来采用屏蔽鼠标的做法,呵呵,也不是常规好方法,属于歪门邪道!)哪位高手能指点一下,如何能可靠的往一个dos窗口里输入信息。即使这个dos窗口是隐藏的,失去焦点了,也能准确无误的接受到信息???我查了一下网上都是如何从dos窗口获取输出信息的帖子,却没有找到如何准确的往里面输入信息的资料。

解决方案 »

  1.   

    应该是使用SENDMESSAGE(如果没有记错的话)
      

  2.   

    SENDMESSAGE发不进去啊?
    SENDMESSAGE,HWND,WM_KEYDOWN ,键盘虚拟码,0&
    HWND是用findwindow找到的该dos窗口的句柄
    DOS窗口接受不到信息啊。
      

  3.   

    好像是通过管道来操作,createpipe,writefile来操作。可惜我弄了N次,都不成功
      

  4.   

    用PostMessage()才能向别的程序发消息!
      

  5.   

    把dos窗口设置为焦点,然后模拟鼠标键盘操作,多简单,还省得动脑筋,这叫一招鲜吃遍天
      

  6.   

    假如你的DOS应用程序是 d:\mydos.exe
    假如你要在mydos.exe运行时输入用户名:user1
    回车后在输入密码:password1
    那么方法如下:1、建立一个文本文件mytext.txt,内容是要送到DOS窗口的内容,
       user1
       pawword1
    2、建立一个批处理文件mybat.bat (注意“ < ”的前后都有空格)
       d:\mydos < mytext.txt
    3、按钮代码:
    Private Sub Command1_Click()shell app.path & "\mybat.bat",vbHide
     
    End Sub