FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour ISEXERUNNING - CaseSensitive
Posts: 6983
Joined: Fri Oct 07, 2005 07:07 PM
ISEXERUNNING - CaseSensitive
Posted: Sat Jan 11, 2014 09:26 AM

Hello,
can someone please help me to change isExeRunning to uppercase.

If your exe ist stored like "xTest.exe" in a folder and you call from a program winexec("XTEST.exe") IsExeRunning does not detect the running xTest.exe.

Thanks in advance and best regards,
Otto

HB_FUNC( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult
{
HANDLE hMutex = CreateMutex( NULL, TRUE, ( LPTSTR ) hb_parc( 1 ) );

hb_retl( GetLastError() == ERROR_ALREADY_EXISTS );

ReleaseMutex( hMutex );
}

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: ISEXERUNNING - CaseSensitive
Posted: Sat Jan 11, 2014 10:23 AM
Otto
You can try this code?

Code (fw): Select all Collapse
Function Probar()
Local lcExeName := "notepad.exe"
? IsExeRunning( lcExeName,  )

Return nil


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
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: ISEXERUNNING - CaseSensitive
Posted: Wed Feb 26, 2014 12:50 PM
Anyone know how to use the handle of the process I get this funtcion with FWH.
For example to activate the process window, or close the process.
As does FindWindow

Alguien sabe como poder usar el handle del proceso que obtengo en esta funtcion con FWH.
Por ejemplo para activar la ventana del proceso, o cerrar el proceso.
Como lo hace FindWindow

Code (fw): Select all Collapse
oLocator   := CREATEOBJECT("WBEMScripting.SWBEMLocator")
oWMI       := oLocator:ConnectServer() 
oWMI:Security_:ImpersonationLevel := 3
 
oProcesses = oWMI:ExecQuery([SELECT * FROM Win32_Process])

IF oProcesses:Count > 0
    FOR EACH oProcess in oProcesses
              AAdd( aProcesos, { oProcess:Name, oProcess:Handle } )
    Next 
ENDIF

nLen  := Len( aProcesos )
      For n = 1 to nLen
          if lower( tcName ) == lower( aProcesos[ n ][ 1 ] )
             nPos  := n
          endif
          if !empty( nPos )
             n   := nLen + 1
          endif
      Next x
     if !empty( nPos )
     uHandle := aProcesos[ n ][ 2 ] 
    ? uHandle, Valtype( uHandle )     // Imprime 5900 , "C" por ejemplo
    endif

Return uHandle
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces

Continue the discussion