Mensaje enviado por Pablo Febolo <pfebolo@microsystem.com.ar>
Proba el codigo que transcribo mas abajo, con NT funciona perfectamente, no estoy seguro si funciona con Win 95/98
finalmente tenes que hacer un
KillApp "NombreDeLaAplciacion"
y te bajara la aplicación, aún si esta estuveira colgada.
Saludos y suerte
---------------------- C O D I GO ------------------
Option Explicit
'************
Private Declare Function GetActiveWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long,ByVal wCmd As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch
As Long) As Long
'GetWindow Konstanten
Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDLAST = 1
Private Const GW_HWNDNEXT = 2
Private Const GW_HWNDPREV = 3
Private Const GW_OWNER = 4
Private Const GW_CHILD = 5
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
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 CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
'OpenProcess Konstanten
Const PROCESS_TERMINATE = &H1
Const PROCESS_CREATE_THREAD = &H2
Const PROCESS_VM_OPERATION = &H8
Const PROCESS_VM_READ = &H10
Const PROCESS_VM_WRITE = &H20
Const PROCESS_DUP_HANDLE = &H40
Const PROCESS_CREATE_PROCESS = &H80
Const PROCESS_SET_QUOTA = &H100
Const PROCESS_SET_INFORMATION = &H200
Const PROCESS_QUERY_INFORMATION = &H400
Const STANDARD_RIGHTS_REQUIRED = &HF0000
Const SYNCHRONIZE = &H100000
Const PROCESS_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF
Function KillApp(AppName As String) As Integer
Dim ihWnd, iOldhWnd, iResult, iFound As Integer
Dim wParam, lParam
Dim cBuffer As String
Dim lpdwProcessId As Long
Dim hProcess As Long
cBuffer = String(255, 0)
iOldhWnd = GetActiveWindow()
ihWnd = GetWindow(iOldhWnd, GW_HWNDFIRST)
Do While ihWnd <> 0 And Not iFound
iResult = GetWindowText(ihWnd, cBuffer, Len(cBuffer))
If iResult > 0 Then
If InStr(Mid(cBuffer, 1, iResult), AppName) Then
iFound = True
Else
cBuffer = String(255, 0)
End If
End If
iOldhWnd = ihWnd
ihWnd = GetWindow(iOldhWnd, GW_HWNDNEXT)
iResult = DoEvents()
Loop
If iFound Then '(1)
'ProcessId ermitteln
iResult = GetWindowThreadProcessId(iOldhWnd, lpdwProcessId)
'Process-Handle ermitteln
hProcess = OpenProcess(PROCESS_TERMINATE, True, lpdwProcessId)
'Process terminieren
iResult = TerminateProcess(hProcess, 99)
iResult = CloseHandle(hProcess) '(2)
End If
End Function
At 28/08/2000 14.26, Marger wrote:
>Hola amigos:
>
>Como Puedo cerrar una aplicación que se colgó, sin tener que usar el famoso
>CTR+ALT+DEL, que no es categórico..
Mensaje enviado por Roberto Cano <rocano@generali-peru.com.pe>
Aca te envio unos ejemplos espero te sirva Saludos
-----Mensaje original-----
De: JUAN FELIPE BETANCUR [JBETANCUR@hermeco.com]
Enviado el: miércoles, 31 de enero de 2001 09:24
Para: visualbasic-esp@yahoogroups.com
Asunto: (VB-ESP) Cerrar Aplicación
Hola. Como puedo cerrar una aplicación que actualmente se encuentra en ejecución ??? NOTA: La aplicación que deseo cerrar es de un tercero, por lo tanto, no conozco absolutamente nada de su implementación interna.