Olá a todos. Preciso que o meu programa feche tudo o que estiver aberto na máquina. Desde o bloco de notas até jogos em 3D. Eu já havia consegui fazer isso com a seguinte rotina:
Function FecharJanelas(ByVal hwnd As Long, ByVal lParam As Long) As Boolean
Dim lTexto As String, Comp As Long, ProcName As Long
Dim ProcessId As Long, ExitCode As Long
On Error Resume Next
If IsWindowVisible(hwnd) Then
Comp = GetWindowTextLength(hwnd)
lTexto = Space(Comp)
GetWindowText hwnd, lTexto, Comp + 1
If Trim(lTexto) <> "" And Trim(lTexto) <> "Program Manager" Then
Err = 0
GetWindowThreadProcessId hwnd, ProcessId
ProcName = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_TERMINATE, False, ProcessId)
GetExitCodeProcess ProcName, ExitCode
TerminateProcess ProcName, ExitCode
CloseHandle ProcName
If Err <> 0 Then DestroyWindow hwnd
End If
End If
FecharJanelas = True
End Function
Porém, ela tem se mostrado ineficiente quando se trata de jogos como NFSU, por exemplo. Alguém teria algum outro código que funcione melhor? Uso o WinXP.
Obrigado.