Hola a todos,
Estoy intentando que un programa FWH sólo se pueda 'arrancar' una vez. Y lo consigo.
En las siguientes usos, consigo detectar que está funcionando.
Y buscando entre las ventanas de windows por su título consigo su Hwnd.
Cómo puedo traer al frente esa ventana de la que tengo su Hwnd ?
He buscado en el foro 'traer al fente' 'primer plano' y no encuentro la solución.
He probado con:
-SetFocus( oWnd:hWnd )
-BringWindowToTop( oWnd:hWnd )
-SetWindowPos(oWnd:hWnd,-1,,,,,8)
Pero no funciona.
Muchas gracias,
Traer al frente - primer plano
Traer al frente - primer plano
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Re: Traer al frente - primer plano
Hola,
Quizás SetForegroundWindow() sea la funcion más adecuada
https://forums.fivetechsupport.com/view ... e63#p42310
Salu2
Quizás SetForegroundWindow() sea la funcion más adecuada
https://forums.fivetechsupport.com/view ... e63#p42310
Salu2
Re: Traer al frente - primer plano
Code: Select all | Expand
IF ISEXERUNNING( CFILENAME( HB_ARGV( 0 ) ) )
MsgInfo( "WinOrcam.exe Já Está Rodando Nesta Máquina","TuPrograma.exe")
SHOWWINDOW( FINDWINDOW( 0, "TUPROGRAMA" ), 9 )
SETFOREGROUNDWINDOW( FINDWINDOW( 0, "TUPROGRAMA" ) )
__QUIT()
RETURN NIL
ENDIF
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Re: Traer al frente - primer plano
Puedes probar con
Code: Select all | Expand
function WndOnTop( lState, hWnd )
local nRet := 0
DEFAULT hWnd := GetActiveWindow()
if !lState
nRet = AcpOnTop( hWnd, -2, 0, 0, 0, 0, 3 )
else
nRet = AcpOnTop( hWnd, -1, 0, 0, 0, 0, 3 )
endif
return nRet
dll32 static function AcpOnTop( hWnd AS LONG, hWndInsertAfter AS LONG, x AS LONG, y AS LONG, cx AS LONG, cy AS LONG, wFlags AS LONG ) ;
AS LONG PASCAL FROM "SetWindowPos" LIB "User32.dll"
Re: Traer al frente - primer plano
PERFECTO!!!!!!
Ha funcionado con SetForegroundWindow().
Muchas gracias,
Ha funcionado con SetForegroundWindow().
Muchas gracias,
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
- JoseAlvarez
- Posts: 807
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Traer al frente - primer plano
Saludos...
Para evitar que mi aplicación se ejecute más de una vez yo uso esto:
Para evitar que mi aplicación se ejecute más de una vez yo uso esto:
Code: Select all | Expand
if IsExeRunning( ("nombre.exe") )
MsgInfo( "No puedes abrir dos veces el programa",'Error...')
release all
quit
endif
"Los errores en programación, siempre están entre la silla y el teclado..."
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
Re: Traer al frente - primer plano
Si, yo también uso esta manera.JoseAlvarez wrote:Saludos...
Para evitar que mi aplicación se ejecute más de una vez yo uso esto:
Code: Select all | Expand
if IsExeRunning( ("nombre.exe") ) MsgInfo( "No puedes abrir dos veces el programa",'Error...') release all quit endif
Pero incluso evito que modifiquen el fichero .EXE así:
If IsExeRunning(cFileName(GetModuleFileName(GetInstance()))) // cFileName(HB_ARGV(0))
...
Muchas gracias,
Un Saludo
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Carlos G.
FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
- JoseAlvarez
- Posts: 807
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Traer al frente - primer plano
Excelente! Esa no me la sabía
Gracias!
Gracias!
"Los errores en programación, siempre están entre la silla y el teclado..."
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.