cEjecutable:="SEGUROS.EXE"
IF IsExeRunning(cEjecutable)
MsgStop("La aplicación ya se está ejecutando","Atención!!!")
Return nil
ENDIF
// VERIFICO SI UN PROGRAMA ESTÁ CORRIENDO //
Function IsExeRunning(cExeVerifica)
Local cTexto,lRespuesta
WAITRUN( "CMD.EXE /C TASKLIST > TASKLIST.TXT" , .f. )
cTexto:=MEMOREAD( "TASKLIST.TXT" )
IF AT(cExeVerifica,cTexto) > 0
lRespuesta:=.t.
ELSE
lRespuesta:=.f.
ENDIF
FERASE("TASKLIST.TXT")
Return lRespuesta
//
hWnd := FindWindow( 0, "Título de la ventana principal de tu aplicación")
IF hWnd != 0
ShowWindow( hWnd, 1 )
QUIT
ENDIF
jrestojeda wrote:Hola,
Prueba lo siguiente:
- Code: Select all Expand view RUN
cEjecutable:="SEGUROS.EXE"
IF IsExeRunning(cEjecutable)
MsgStop("La aplicación ya se está ejecutando","Atención!!!")
Return nil
ENDIF
- Code: Select all Expand view RUN
// VERIFICO SI UN PROGRAMA ESTÁ CORRIENDO //
Function IsExeRunning(cExeVerifica)
Local cTexto,lRespuesta
WAITRUN( "CMD.EXE /C TASKLIST > TASKLIST.TXT" , .f. )
cTexto:=MEMOREAD( "TASKLIST.TXT" )
IF AT(cExeVerifica,cTexto) > 0
lRespuesta:=.t.
ELSE
lRespuesta:=.f.
ENDIF
FERASE("TASKLIST.TXT")
Return lRespuesta
//
Espero te sirva la idea.
Saludos,
Function IsExeRunning( tcName, lTerminate )
Local oLocator
Local oWMI
Local oProcesses
Local oProcess
Local lIsRunning
DEFAULT lTerminate := .F.
oLocator := CREATEOBJECT("WBEMScripting.SWBEMLocator")
oWMI := oLocator:ConnectServer()
oWMI:Security_:ImpersonationLevel := 3
oProcesses = oWMI:ExecQuery([SELECT * FROM Win32_Process WHERE Name = '] + tcName + ['])
lIsRunning = .F.
IF oProcesses:Count > 0
FOR EACH oProcess in oProcesses
lIsRunning := .T.
IF lTerminate
oProcess:Terminate(0)
ENDIF
Next
ENDIF
Return lIsRunning
oWShell := CreateObject("WScript.Shell")
oWShell:AppActivate(oProcess:ProcessId)
Biel EA6DD wrote:Tomando como base la función de Cristobal, en lugar de cerrar la aplicación (oProcess:Terminate(0)) podrias darle el foco
- Code: Select all Expand view RUN
oWShell := CreateObject("WScript.Shell")
oWShell:AppActivate(oProcess:ProcessId)
Armando wrote:José Luis:
EL código que sugerí en este hilo hace lo que necesitas.
Saludos
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 85 guests