在VB中使用API關閉窗口
發(fā)表時間:2023-07-22 來源:明輝站整理相關軟件相關文章人氣:
[摘要]在進行VB編程過程中,有時需要通過程序控制終止某些程序。在實踐中可以使用一下一些方法: 1。使用SendMessagePrivate Declare Function SendMessage ...
在進行VB編程過程中,有時需要通過程序控制終止某些程序。在實踐中可以使用一下一些方法:
1。使用SendMessage
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
hwnd 為需要關閉的窗口程序的窗口句柄;
發(fā)送的消息可以用兩種選擇1,wMsg為WM_CLOSE,wParam,lParam為0;2,wMsg為WM_SYSCOMMAND,wParam為CS_CLOSE,lParam為0。
2。使用TerminateProcess
Private Declare Function TerminateProcess Lib "kernel32" Alias "TerminateProcess" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
hProcess 為指定要中斷的一個進程的句柄 ;
uExitCode 進程的一個退出代碼
3。使用CloseWindow
Private Declare Function CloseWindow Lib "user32" Alias "CloseWindow" (ByVal hwnd As Long) As Long
hwnd為想要關閉窗口的句柄。
4。如果要關閉所有的窗口可以使用BroadcastSystemMessage
Private Declare Function BroadcastSystemMessage Lib "user32" Alias "BroadcastSystemMessage" (ByVal dw As Long, pdw As Long, ByVal un As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
dw 為下述常數的一個或多個;
BSF_FLUSHDISK
每次處理完一條消息后,都對磁盤進行刷新(將未存盤的數據存下來
BSF_FORCEIFHUNG
如目標處于掛起狀態(tài),則在設定的超時后到期返回
BSF_IGNORECURRENTTASK
發(fā)送任務不接收消息
BSF_LPARAMBUFFER
pdw 為下述常數的一個或多個;
BSF_ALLCOMPONENTS
消息進入能夠接收消息的每一個系統(tǒng)組件
BSF_APPLICATIONS
消息到達應用程序
BSF_INSTALLABLEDRIVERS
消息到達可安裝的驅動程序
BSF_NETDRIVERS
消息到達網絡驅動程序
BSF_VXDS
消息到達系統(tǒng)設備驅動程序
un 為消息編號;
消息和使用SendMessage時相同。
5。使用ExitWindowsEx關閉所有程序
Private Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
將uFlags 設置為EWX_FORCE強迫中止沒有響應的進程。
dwReserved 為0
注意!由于以下原因導致不能關閉程序。
1。在NT/2000/XP的系統(tǒng)中,進程句柄需要有PROCESS_TERMINATE的訪問權限才能被殺掉。
2。如果要關閉的進程正處于Kernal-Mode,那么TerminateProcess函數就會不起作用。