da Robby78 » lun dic 13, 2004 8:54 am
....ho fatto questa funzione x terminare un processo che si bloccava; nn è una vera e propria chiusura... è come quando fai "Termina" da task manager: uccide proprio il processo...
Dichiarazioni API:
Declare Function TerminateProcess Lib "Kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Declare Function GetExitCodeProcess Lib "Kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
Declare Function OpenProcess Lib "Kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Declare Function GetWindowThreadProcessId Lib "User32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
Funzione:
Public Sub Termina_Applicazione(sFormTitle As String)
Dim lExitCode As Long
Dim lProcessID As Long
Dim lWindowH As Long
Dim lProcessH As Long
'Ricavo l'Handle della finestra
lWindowH = FindWindow(vbNullString, sFormTitle)
'Ricavo il Process ID
Call GetWindowThreadProcessId(lWindowH, lProcessID)
'Ricavo il Process Handle
lProcessH = OpenProcess(5, False, lProcessID)
'Ricavo l'Exit Code
Call GetExitCodeProcess(lProcessH, lExitCode)
'Chiudo il processo!
Call TerminateProcess(lProcessH, lExitCode)
End Sub
il valore da passare alla Sub è il titolo della form principale del programma da chiudere... se cerki un po' nelle API di windows trovi sicuramente un modo + elegante x farlo ma io nn avevo tempo...
A proposito... se lo trovi postalo qui che può tornare utile a qualcuno!
Ciao
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma