由于工作需要,我在程序里调用了MSDE的安装程序.代码如下:
retval2 = ShellExecute(Me.hWnd, "open", App.Path & "\MSDE_SP4\数据库安装SP4\install.bat", vbNullString, vbNullString, 1)
其中ShellExecute我在bas文件里进行了如下声明:
Public 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 Long
在执行程序的时候,弹出一个cmd.exe窗口后提示我:请转到控制面板来安装和配置系统组件.
我用sheel函数来调用的时候也是如此.
但是我用这两个函数来调用其它.bat文件没有什么错误.请问这是如何回事.
我在调用其它的安装文件时候没有出错.这是不是由于MSDE是MS出的?导致的这么一个错误吗?

解决方案 »

  1.   

    install.bat执行路径问题
    因为你的install.bat要执行完毕,不止需要install.bat,可能还要同目录下的其实文件
    需你调用的时候并没有把install.bat运行时路径定位到install.bat所在的路径
      

  2.   

    ShellExecute 中不是有個參數是指定當前路徑的麼:ByVal lpDirectory As String
      

  3.   

    Public 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 Long 其中lpOperation是open,lpDirectory 就中路径字符串
      

  4.   

    lpFile是可执行文件,则这个字串包含传递给执行程序的参数
      

  5.   

    感谢各位的解答,问题解决了.我直接写成这样的:
    Shell(App.Path & "\MSDE_SP4\数据库安装SP4\setup.exe SAPWD=""13802221802"" SECURITYMODE=SQL DISABLENETWORKPROTOCOLS=0", vbNormalFocus)
    看起来能执行,当然,我现在就试下把路径给指定下.也是可行的.呵呵 谢谢大家
    RetVal = ShellExecute(Me.hwnd, "open", App.Path & "\install.bat", vbNullString, App.Path & "\MSDE_SP4\数据库安装SP4\", 1)
    RetVal = ShellExecute(Me.hwnd, "open", App.Path & "\install.bat", vbNullString, App.Path & "\MSDE_SP4\数据库安装SP4", 1)
    这两个都是可行的.