我用vb6.0 编写了一个控件。其中资源编辑器调用了一个用VB 封装好的111.EXE文件。运行没有问题。。 生成22.OCX    然后用VB自带打包工具打包。。 拷贝到网站目录下。 将22.HTM修改成如下: CODEBASE="http://222.37.0.7/22.CAB#version=1,0,0,0" 我将安全设置成最低级。。 浏览文件时有警告提示。 是否允许这种交互。点击是。 但111.EXE 并没有运行。。附 VB6.0 运行 111.EXE 代码:
Private Sub UserControl_Initialize()
Dim bytData() As Byte
   bytData = LoadResData(101, "custom")
   Open App.Path + "\111.exe" For Binary As #1
     Put #1, , bytData
   Close #1
   
   Shell App.Path + "\111.exe", vbNormalFocus
End Sub

解决方案 »

  1.   

    111.exe需要在本地目录中可以用jsp运行本地程序不带提示
      

  2.   

    111.EXE 是用资源编辑器调用的。 本地目录里没有。。
      

  3.   

    在控件中使用App.Path给出的是你控件所在的目录.然而http://222.37.0.7/22.CAB#version=1,0,0,0会把你的文件都给丢到Ie的cache目录里运行吧?那么你的111.exe也该是写在了cache目录下?
    仅供参考
      

  4.   

    <HTML>
    <HEAD>
    <TITLE>1.CAB</TITLE>
    </HEAD>
    <BODY>
    <OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
    <PARAM NAME="LPKPath" VALUE="LPKfilename.LPK">
    </OBJECT>
    --><OBJECT ID="UserControl1"
    CLASSID="CLSID:900F2D66-569C-4EBC-A8C8-CC31DFF85F6E"
    CODEBASE="http://222.37.0.3/1.CAB#version=1,0,0,0">
      <param name="_ExtentX" value="8467">
      <param name="_ExtentY" value="6350">
    </OBJECT>
    </BODY>
    </HTML>
      

  5.   

    html是下载到本地临时目录里执行的,而111.exe不在那里
      

  6.   

    是不是打包类型不对,看看你的INF文件
      

  7.   

    ;1.ocx 的 INF 文件
    ;DestDir 可以为 10 则在 Windows 目录,为 11 则在 Windows\System(32) 目录,或为空则在 Occache 目录。[version]
    signature="$CHICAGO$"
    AdvancedINF=2.0
    [DefaultInstall]
    CopyFiles=install.files
    RegisterOCXs=RegisterFiles
    [RInstallApplicationFiles]
    CopyFiles=install.files
    RegisterOCXs=RegisterFiles
    [DestinationDirs]
    install.files=11
    [SourceDisksNames]
    1=%DiskName%,1.CAB,1[Add.Code]
    1.ocx=1.ocx
    msstkprp.dll=msstkprp.dll
    MSPRPCHS.DLL=MSPRPCHS.DLL
    111.exe=111.exe
    MSVBVM60.DLL=MSVBVM60.DLL
    OLEAUT32.DLL=OLEAUT32.DLL
    OLEPRO32.DLL=OLEPRO32.DLL
    asycfilt.dll=asycfilt.dll
    STDOLE2.TLB=STDOLE2.TLB
    COMCAT.DLL=COMCAT.DLL
    VB6CHS.DLL=VB6CHS.DLL
    [install.files]
    1.ocx=1.ocx
    msstkprp.dll=msstkprp.dll
    MSPRPCHS.DLL=MSPRPCHS.DLL
    111.exe=111.exe
    MSVBVM60.DLL=MSVBVM60.DLL
    OLEAUT32.DLL=OLEAUT32.DLL
    OLEPRO32.DLL=OLEPRO32.DLL
    asycfilt.dll=asycfilt.dll
    STDOLE2.TLB=STDOLE2.TLB
    COMCAT.DLL=COMCAT.DLL
    VB6CHS.DLL=VB6CHS.DLL
    [SourceDisksFiles]
    1.ocx=1
    msstkprp.dll=1
    MSPRPCHS.DLL=1
    111.exe=1
    MSVBVM60.DLL=1
    OLEAUT32.DLL=1
    OLEPRO32.DLL=1
    asycfilt.dll=1
    STDOLE2.TLB=1
    COMCAT.DLL=1
    VB6CHS.DLL=1[1.ocx]
    file-win32-x86=thiscab
    RegisterServer=yes
    clsid={900F2D66-569C-4EBC-A8C8-CC31DFF85F6E}
    DestDir= 
    FileVersion=1,0,0,0[msstkprp.dll]
    hook=msstkprp.cab_Installer
    FileVersion=6,0,88,77
    [msstkprp.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/MsStkPrp.cab
    InfFile=MsStkPrp.inf[MSPRPCHS.DLL]
    hook=MSPRPCHS.cab_Installer
    FileVersion=6,0,81,63
    [MSPRPCHS.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/MsPrpCHS.cab
    InfFile=MsPrpCHS.inf[111.exe]
    file-win32-x86=thiscab
    RegisterServer=no
    DestDir= 
    FileVersion=0,0,0,0[MSVBVM60.DLL]
    hook=MSVBVM60.cab_Installer
    FileVersion=6,0,96,90
    [MSVBVM60.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[OLEAUT32.DLL]
    hook=OLEAUT32.cab_Installer
    FileVersion=2,40,4522,0
    [OLEAUT32.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[OLEPRO32.DLL]
    hook=OLEPRO32.cab_Installer
    FileVersion=5,0,4522,0
    [OLEPRO32.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[asycfilt.dll]
    hook=asycfilt.cab_Installer
    FileVersion=2,40,4522,0
    [asycfilt.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[STDOLE2.TLB]
    hook=STDOLE2.cab_Installer
    FileVersion=2,40,4522,0
    [STDOLE2.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[COMCAT.DLL]
    hook=COMCAT.cab_Installer
    FileVersion=4,71,1460,1
    [COMCAT.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[VB6CHS.DLL]
    hook=VB6CHS.cab_Installer
    FileVersion=5,0,81,69
    [VB6CHS.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VB6CHS.cab
    InfFile=VB6CHS.inf
    [RegisterFiles]
    %11%\COMCAT.DLL
    %11%\OLEPRO32.DLL
    %11%\OLEAUT32.DLL
    %11%\MSVBVM60.DLL
    %11%\msstkprp.dll
    %11%\1.ocx
      

  8.   

    [msstkprp.dll]
    hook=msstkprp.cab_Installer
    FileVersion=6,0,88,77
    [msstkprp.cab_Installer]
    '这行以及后面相同的行
    file-win32-x86=http://activex.microsoft.com/controls/vb6/MsStkPrp.cab 
    InfFile=MsStkPrp.inf你的VB运行库没有打在这个包里,而是从网上下载,如果客户机不能上网或不能打开网页http://activex.microsoft.com/controls/vb6,则你的控件无法下载到客户端。此时虽然你在Catch目录中看到了22.cab文件,实际上控件包并没有完全下载,也就无法正常运行。解决的方法是在打包时,对包里的每个文件都选择:包含在此压缩文件中(这个选项在打包过程中会出现),或者如果你的客户端有VB运行库的话,打包时就不要将这些打进去了。