To close an application, once you have the hwnd, use this code:

VB Code:
  1. Option Explicit
  2.  
  3. Private Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
  4. Private Const SC_CLOSE = &HF060&
  5. Private Const WM_SYSCOMMAND = &H112
  6.  
  7.  
  8. Private Declare Function IsWindow Lib "user32" (ByVal hwnd As Long) As Long
  9. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  10. Const PROCESS_ALL_ACCESS = &H1F0FFF
  11.  
  12. Private Declare Function TerminateProcess& Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long)
  13. Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
  14. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  15.  
  16.  
  17. Sub CloseWindowByHwnd(ByVal hwnd&)
  18. 'Nucleus
  19.     Dim lPid                    As Long
  20.     Dim lHp                     As Long
  21.  
  22.     SendMessageTimeout hwnd, WM_SYSCOMMAND, SC_CLOSE, 0, 0, 500, 0
  23.     '
  24.     ' If the window doesn't like gentle persuasion, bring out the nipple clamps to force it to close
  25.     '
  26.     If IsWindow(hwnd) Then
  27.         Call GetWindowThreadProcessId(hwnd, lPid)
  28.         lHp = OpenProcess(PROCESS_ALL_ACCESS, 0&, lPid)
  29.         TerminateProcess lHp&, 0&
  30.         CloseHandle lHp
  31.     End If
  32.     '
  33. End Sub