完整代码如下:(WIN2000,VB6下编译通过)Private Type STARTUPINFO
      cb As Long
      lpReserved As String
      lpDesktop As String
      lpTitle As String
      dwX As Long
      dwY As Long
      dwXSize As Long
      dwYSize As Long
      dwXCountChars As Long
      dwYCountChars As Long
      dwFillAttribute As Long
      dwFlags As Long
      wShowWindow As Integer
      cbReserved2 As Integer
      lpReserved2 As Long
      hStdInput As Long
      hStdOutput As Long
      hStdError As Long
  End Type  Private Type PROCESS_INFORMATION
      hProcess As Long
      hThread As Long
      dwProcessID As Long
      dwThreadID As Long
  End Type  Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
      hHandle As Long, ByVal dwMilliseconds As Long) As Long  Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
      lpApplicationName As String, ByVal lpCommandLine As String, ByVal _
      lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
      ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
      ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, _
      lpStartupInfo As STARTUPINFO, lpProcessInformation As _
      PROCESS_INFORMATION) As Long  Private Declare Function CloseHandle Lib "kernel32" _
      (ByVal hObject As Long) As Long  Private Declare Function GetExitCodeProcess Lib "kernel32" _
      (ByVal hProcess As Long, lpExitCode As Long) As Long  Private Const NORMAL_PRIORITY_CLASS = &H20&
  Private Const INFINITE = -1&
  
  '*************
  '以上为声明部分
  '*************  Public Function ExecCmd(cmdline$)
      Dim proc As PROCESS_INFORMATION
      Dim start As STARTUPINFO        start.cb = Len(start)        ret& = CreateProcessA(vbNullString, cmdline$, 0&, 0&, 1&, _
        NORMAL_PRIORITY_CLASS, 0&, vbNullString, start, proc)        ret& = WaitForSingleObject(proc.hProcess, INFINITE)
        Call GetExitCodeProcess(proc.hProcess, ret&)
        Call CloseHandle(proc.hThread)
        Call CloseHandle(proc.hProcess)
        ExecCmd = ret&
  End FunctionPrivate Sub Command1_Click()
  Dim retval As Long
  retval = ExecCmd("E:\Program Files\WinZip\WINZIP32.EXE") '此处为本机上WINZIP的安装路径
End Sub代码用法:
新建一个工程,在窗体上添加一个COMMAND控件,编译运行工程,单击按钮即可打开WINZIP

解决方案 »

  1.   

    '贴:Private Sub Command1_Click()
        Dim wzipexe As String    ' winzip 执行文件的位置
        Dim wsource As String    ' 原始文件 (压缩前)
        Dim wtarget As String      ' 目地文件 (压缩后)
        Dim wcmd As String        ' Shell 指令
        Dim retval As Double      ' Shell 指令传回值    ' Shell 指令
        wzipexe = "C:\program files\winzip\WINzip32" ' winzip 执行文件的位置
        wtarget = Text2.Text  ' 目地文件 (压缩后)
        wsource = Text1.Text ' 原始文件 (压缩前)
        wcmd = wzipexe & " -a " & wtarget & " " & wsource
        retval = Shell(wcmd, 6)
        
        
    End Sub