Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.227.111.162] |
|
Сообщ.
#1
,
|
|
|
Первый способ просто послать ей сообщение о закрытии
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 Private Const WM_CLOSE = &H10 Private Sub CloseProg(Handle As Long) Call SendMessage(Handle, WM_CLOSE, 0, 0) End Sub Второй способ более мощный и бесцеремонный Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long 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 Private Const PROCESS_TERMINATE = &H1, WM_QUERYENDSESSION = &H11, WM_ENDSESSION = &H16 Private Sub CloseProg(Handle As Long) Dim pID As Long, hProc As Long Call GetWindowThreadProcessId(Handle, pID) hProc = OpenProcess(PROCESS_TERMINATE, False, pID) Call SendMessage(Handle, WM_QUERYENDSESSION, 0, 1) Call SendMessage(Handle, WM_ENDSESSION, -1, 1) Call TerminateProcess(hProc, 0) Call CloseHandle(hProc) End Sub |