per far si che la procedura venga lanciata una sola volta ho ripreso questo codice che funziona egregiamente:
Code: Select all
OpenExe( cWINDOW, nValue )
LOCAL hWnd := GETWINDOW( GETDESKTOPWINDOW(), GW_CHILD ), lExist := .F.
DEFAULT nValue := SW_MAXIMIZE
IF ! Empty( cWindow )
cWINDOW := Upper( cWINDOW )
WHILE hWnd != 0
IF cWINDOW $ UPPER( GETWINDOWTEXT( hWnd ) )
ShowWindow( hWnd, nValue )
lExist := .T.
Exit
ENDIF
hWnd = GETWINDOW( hWnd, GW_HWNDNEXT )
ENDDO
ENDIF
RETURN lExist
In pratica vorrei che quando viene rilanciata la procedura e questa sente che una è già in esecuzione dovrebbe riportare il fuoco su quella già aperta e poi chiudersi.
Attualmente si chiude senza portare in primo piano quella già aperta.
Ho provato con SW_SHOW, SW_SHOWNORMAL, SW_MAXIMIZE senza alcun risultato.
E' possibile?
Grazie per l'aiuto.