Hola a todos
He observado que la aplicación, cuando le pongo el SET MULTIPLE OFF no funciona y abre tantas ventanas de la aplicación como clicks le des al acceso directo. ¿Hay alguna equivalencia en Harbour?
Saludos
Function IsExeRunning( tcName, lTerminate )
Local oLocator
Local oWMI
Local oProcesses
Local oProcess
Local lIsRunning
Local nRet := 0
Local aProcess := {}
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
if Upper( AllTrim( oProcess:Name ) ) == Upper( AllTrim( tcName ) )
hRet := oProcess:Handle
lIsRunning := .T.
if lTerminate
nRet := oProcess:Terminate( 0 )
if nRet = 0
hRet := -1 // ¿?
lIsRunning := .F.
endif
endif
endif
//AAdd( aProcess, { oProcess:Name, oProcess:Handle } )
Next
endif
//XBrowse( aProcess )
Return lIsRunning
incluir libreria hbwin.lib
/*Mutex constant for application*/
#define MUTEX_NAME "KDSOFT_MYAPP"
STATIC hMutex
PROCEDURE Main()
//main code :-)
RETURN
INIT PROCEDURE Main_Init()
hMutex := wapi_CreateMutex( NIL, NIL, MUTEX_NAME )
IF !Empty( hMutex ) .AND. wapi_GetLastError() == 0
//allow execution of application
ELSE
MsgAlert( "La aplicación ya esta en ejecución, seleccionela en la barra de tareas.", "Alerta" )
MyQuit()
ENDIF
RETURN
/*-------------------------------------------------------------------------------------------------*/
EXIT PROCEDURE Main_End()
IF !Empty( hMutex )
hMutex := NIL
ENDIF
MyQuit()
RETURN
FUNCTION MyQuit()
PostQuitMessage( 0 )
__Quit()
RETURN
__cExe := cFileName( HB_ARGV( 0 ) )
IF IsExeRunning( __cExe ) // Verifica que no Exista una Aplicacion ya Corriendo en la Computadora
MiMsgStop( {"1 No Puedes tener 2 Aplicaciones Abiertas..."}, "Alto!", , .T., 5, .F.)
Cerrar1()
ENDIF
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: Google [Bot] and 53 guests