我在VB中通过shell调用了一个程序A.exe,运行时A程序可正常启动,但提示有一个A.exe要用到的文件B.cal没有找到。但我单独运行A.exe却可正常运行。经试验,此现象有如我将A.exe生成一个快捷方式,双击此快捷方式,A.exe可正常运行。若将此快捷方式的"起始位置"改变,就会出现B.cal文件没有找到的错误。
请问,如何在VB中调用shell时,再将此外部程序的起始位置也设置了呢?谢谢。(现在我用的解决办法是调用shell前,把B.cal复制到了我程序的目录下。)

解决方案 »

  1.   

    Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long用这个函数指定下当前的工作目录
      

  2.   

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Command1_Click()
        ShellExecute Me.hwnd, "open", 可执行文件的完整路径文件名, vbNullString, 楼主说的起始路径, 1
    End Sub这样试试
      

  3.   

    或使用资源文件包含后并二进制释放文件到所需要的任何路径下,再shell,一劳永逸。