比如dos中的"copy"命令还有其它以前的QBASIC及TC编的程序,都是Dos界面的,输入数据比较麻烦,如何控制向运行的这些程序中输入数据?能否举一个例子,拿"copy c:\1.text d:\"这条dos命令来举例,请不要用vb自带的函数FileCopy实现,请用"shell ("command.exe")"命令后再向command的dos窗口中输入"copy c:\1.text d:\"这个命令。谢谢。因为是拿来举例参考,所不请不要笑用复杂的程序来实现来实现copy这样一个简单的功能

解决方案 »

  1.   

    运行中的DOS程序对外界是封闭的,也就是说“命令提示符”窗口对外界是封闭的,我估计不太可能向这个窗口传入DOS命令。用"shell (command.exe)"命令会单独打开一个窗口。
      

  2.   

    Shell "cmd /c  " & "copy c:\aa.txt d:\"
      

  3.   

    可以使用Sendkeys或者SendMessage来完成
      

  4.   

    直接打开cmd窗体以后sendkeys是可以的。但是打开某个应用以后就未必了。刚才试了一下,打开edit.exe以后,sendkeys无效。可能只能用消息了
      

  5.   

    chewinggum(口香糖·第二次减肥计划执行中)
       Shell "cmd /c  " & "copy c:\aa.txt d:\"
    或者直接 shell("copy c:\aa.txt d:\") 就是了,这会自动打开命令窗口的,你也可以隐藏这个窗口(我喜欢这样。让用户看到你调用一个命令窗口不会是一件高兴的事。)。如果是一串DOS命令,就先生成一个BAT,然后去SHELL这个BAT。
      

  6.   

    用管道不行,管道只能管理command.exe 或 cmd.exe,对其它的Dos程序就不行了,比如说一个TC程序,要求你输入一个值,然后用这个值求解一个方程,就无法用管道程序控制向这个程序输入,如果用sendmessage怎么处理这个问题呢?用command做一个拷备的命令只是一个例子,实际上并不是想实现这样一个功能
      

  7.   

    再问一个问题:
    API函数中,
    CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long如何获得一个已启动进程的lpApplicationName,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpProcessInformation
    ?而这个进程不是用creatprocess启动的?
      

  8.   

    '窗口是否属于激活状态~
    shell
    Sendkeys
    SendMessage
    SendIput
    keybd_event
    winexec
    CreateProcess
    ShellExecute