Private Sub Command1_Click()
Shell ("cmd.exe") 
SendKeys "cd c:\{enter}"
SendKeys "c:" & "{enter}"
End Sub
代码是这样的,现在问题是会弹出多个CMD窗口.当我把SendKeys "cd c:\{enter}"
SendKeys "c:" & "{enter}"两个语句删除后又只弹出一个CMD窗口了.是什么原因呢?各位大侠指教一下..

解决方案 »

  1.   

    Private Sub Command1_Click()
    Shell ("cmd /c c:") End Sub 
      

  2.   

    应该是
    Private Sub Command1_Click()
    Shell ("cmd /k c:")
    End Sub
      

  3.   

    不要用SendKeys
    这样很难确保你命令的执行的,万一焦点丢失就不好了'创建一个零时的批处理文件,并向批处理文件写命令
    Open "C:\Temp.bat" For Output As #1
    Print #1, "ECHO OFF"
    Print #1, "C:"
    Print #1, "CD\"
    Print #1, "Cls"
    Print #1, "Del C:\Temp.bat"   '自动删除批处理文件Close #1'执行批处理文件
    Shell "CMD /K C:\Temp.bat", vbNormalFocus
      

  4.   

     就是用VB将你要实现的功能写成批处理,然后在VB中用shell调用批处理
      

  5.   

    真是天才 Shell ("cmd.exe")  能保住窗口,继续响应你的Sendkeys???
      

  6.   

    LZ是不是要求打开CMD窗口 并且当前位置为C:根目录
    试试这样
    Shell "cmd /k c: && cd\", vbNormalFocus
      

  7.   

    6F 7F 不见的是我昨晚发的, CSDN服务器昨晚出了问题.Shell ("cmd.exe")  
    你能保住它的窗口 ??? 你还有能耐 sendkeys到这个DOS窗口 ? 服了楼主.....
      

  8.   

    另外一种相对彻底的解决方案,管道重定向:http://topic.csdn.net/u/20080314/21/5aa66dea-2a8a-45a1-bd38-d305bbb1b8fa.html对于需要知道执行情况的条件下,做成这种方案应该要好些.用在楼主的情况下貌似有点大材小用了....
      

  9.   

    很简单啊
    Shell "cmd.exe /k cd c:\ & c:", vbNormalFocus