'关闭一个程序 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。
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从程序员大本营光盘里找到的
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。
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从程序员大本营光盘里找到的