用ShellExecute运行程序,可以得到一个进程句柄;
用TerminateProcces关闭它。

解决方案 »

  1.   

    用ShellExecute运行程序,可以用API 的 sendmessage 关闭程序
      

  2.   

    '关闭一个程序
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
    (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
    Private Sub Command1_Click()
    Dim winHwnd As Long
    Dim RetVal As Long
    winHwnd = FindWindow(vbNullString, Text1.Text)
    Debug.Print winHwnd
    If winHwnd <> 0 Then
    RetVal = PostMessage(winHwnd, &H10, 0&, 0&)
    If RetVal = 0 Then
    MsgBox "Error posting message."
    End If
    Else
    MsgBox "并未开启" & Text1.Text
    End If
    End Sub
    Shell 函数示例
    本示例使用 Shell 函数来完成一个用户指定的应用程序。' 将第二个参数值设成 1,可让该程序以正常大小的窗口完成,并且拥有焦点。
    Dim RetVal
    RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)   ' 完成Calculator。
      

  3.   

    Dim FHandle As Variant '(儲存視窗代碼的變數Private Sub Command1_Click()
    FHandle = Shell("C:\WIND98\CALC.EXE", 1) '(開啟外部執行檔)
    End SubPrivate Sub Command2_Click()
    AppActivate FHandle '讓先前開啟的視窗取得焦點。
    SendKeys "%{f4}", True '送出 [Alt]+[F4] Windows 系統的關閉組合鍵。
    End Sub改寫成能處理錯誤的呼叫函數則如下:開啟 Windows 應用程式
    'varAppName 是程式路徑及名稱之傳遞參數
    'varWinState 是應用程式視窗開啟狀態,設定方式請參考 Shell
    '的 WindowsStyle 說明
    Private Function OpenApp(ByVal varAppName As String, _
    Optional ByVal varWinState As Integer)
    '傳回應用程式之視窗代碼
    Dim varWinTitle As Variant'錯誤處理
    On Error GoTo OpenAppErrvarWinTitle = Shell(varAppName, varWinState)
    OpenApp = varWinTitle
    Exit FunctionOpenAppErr:
    Select Case Err.Number
    Case 53
    MsgBox "程式路徑或名稱錯誤", vbOKOnly, "開啟應用程式"
    End Select
    End Function'關閉 Windows 應用程式
    'varWinTitle 是開啟程式時 Windows 系統給的代碼
    Private Sub CloseApp(ByVal varWinTitle As Variant)'錯誤處理
    On Error GoTo CloseAppErrAppActivate varWinTitle
    '用 SendKeys 陳述模擬鍵盤 [ALT]+[F4]
    SendKeys "%{F4}"
    Exit SubCloseAppErr:
    Select Case Err.Number
    Case 5
    MsgBox "程式視窗已被關閉", vbOKOnly, "關閉應用程式"
    End Select
    End Sub'上面是改寫 Shell 和 AppActivate 的兩個函數,呼叫方式如下:'宣告一個儲存視窗代碼的變數
    Private WinTitle As Variant'開程式
    Private Sub Command1_Click()
    Dim AppName As StringAppName = "你的程式路徑及名稱"
    WinTitle = OpenApp(AppName)
    End Sub'關程式
    Private Sub Command2_Click()
    CloseApp WinTitle
    End Sub从程序员大本营光盘里找到的