Hola a todos:
Estoy incorporando el siguiente codigo para poder comprobar si el programa se esta ejecutando y si se trata de ejecutar de nuevo no hacerlo, pero cuando me da la lista no me incluye el programa pero si abro el Administrador de Tareas si esta. Me podriais ayudar.
Un saludo
Carlos
Estoy incorporando el siguiente codigo para poder comprobar si el programa se esta ejecutando y si se trata de ejecutar de nuevo no hacerlo, pero cuando me da la lista no me incluye el programa pero si abro el Administrador de Tareas si esta. Me podriais ayudar.
Un saludo
Carlos
#include "FiveWin.ch"
#define GWL_HINSTANCE -6
static aTasks := {}
function Main()
local aTask
EnumChildWindows( GetDesktopWindow(), { | hWnd | AddTask( hWnd ) } )
for each aTask in aTasks
aTask = aTask[ 1 ] + ", " + aTask[ 2 ]
next
MsgList( ASort( aTasks ), "Applications in use" )
return nil
function AddTask( hWnd )
local cTaskName := GetWindowModuleFileName( hWnd )
if AScan( aTasks, { | aTask | aTask[ 2 ] == cTaskName } ) == 0
AAdd( aTasks, { GetWindowText( hWnd ), cTaskName } )
endif
return nil
#pragma BEGINDUMP
#include <windows.h>
#include <psapi.h>
#include <hbapi.h>
HB_FUNC( GETWINDOWMODULEFILENAME )
{
HWND hWnd = ( HWND ) hb_parnl( 1 );
UINT processId = 0;
DWORD dwLength = 1024;
char buffer[ 1024 ];
HMODULE hProcess;
GetWindowThreadProcessId( hWnd, &processId );
hProcess = OpenProcess( 1040, 0, processId );
dwLength = GetModuleFileNameEx( hProcess, 0, buffer, dwLength );
CloseHandle( hProcess );
hb_retclen( buffer, dwLength );
}
#pragma ENDDUMPColt Hop ED, S.L.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es
Nunca se termina de aprender, por eso necesito siempre ayuda.
Carlos Blas Fernández Domínguez
Tlfo: 645847093
E-Mail: carlos@colthop.es
Nunca se termina de aprender, por eso necesito siempre ayuda.