Traducción de una entrada del blog del ruso Sergey Berezniker que nos muestra dos métodos para terminar una aplicación que se está ejecutando
Entrada Original: CHECK IF EXE IS running AND optionally TERMINATE it
La primera opción es utilizando Scripts de WMI:
lcExeName = "notepad.exe" * Se esta ejecutando el EXE ? IsExeRunning(lcExeName) * Cierra el EXE si se esta ejecutando ? IsExeRunning(lcExeName, .T.) RETURN FUNCTION IsExeRunning(tcName, tlTerminate) LOCAL loLocator, loWMI, loProcesses, loProcess, llIsRunning loLocator = CREATEOBJECT('WBEMScripting.SWBEMLocator') loWMI = loLocator.ConnectServer() loWMI.Security_.ImpersonationLevel = 3 && Impersonate loProcesses = loWMI.ExecQuery([SELECT * FROM Win32_Process WHERE Name = '] + tcName + [']) llIsRunning = .F. IF loProcesses.COUNT > 0 FOR EACH loProcess IN loProcesses llIsRunning = .T. IF tlTerminate loProcess.TERMINATE(0) ENDIF ENDFOR ENDIF RETURN llIsRunning ENDFUNC
La otra opción es mediante API:
#DEFINE WM_CLOSE 0x10 DECLARE LONG FindWindow IN WIN32API STRING ClassName, STRING WindowTitle DECLARE LONG SendMessage IN WIN32API LONG HWND, LONG Msg, LONG wParam, LONG LPARAM lcWindowTitle = "Sin título - Bloc de notas" HWND = FindWindow( NULL, lcWindowTitle ) IF HWND = 0 ? "Ventana no encontrada" RETURN ENDIF =SendMessage( HWND, WM_CLOSE, 0, 0 ) RETURN
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.