FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Traer al frente - primer plano
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Traer al frente - primer plano
Posted: Fri Aug 09, 2024 02:55 PM

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,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 318
Joined: Fri Jan 14, 2022 08:37 AM
Re: Traer al frente - primer plano
Posted: Fri Aug 09, 2024 03:17 PM
Hola,

Quizás SetForegroundWindow() sea la funcion más adecuada

https://forums.fivetechsupport.com/viewtopic.php?p=42310&sid=54b1bc8e98027fa990010f38e1026e63#p42310

Salu2
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Traer al frente - primer plano
Posted: Fri Aug 09, 2024 03:19 PM
Code (fw): Select all Collapse
   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
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: Traer al frente - primer plano
Posted: Fri Aug 09, 2024 03:31 PM
Puedes probar con
Code (fw): Select all Collapse
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"
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Traer al frente - primer plano
Posted: Fri Aug 09, 2024 04:22 PM

PERFECTO!!!!!!

Ha funcionado con SetForegroundWindow().

Muchas gracias,

Un Saludo

Carlos G.



FiveWin 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Traer al frente - primer plano
Posted: Sat Aug 10, 2024 12:53 PM
Saludos...

Para evitar que mi aplicación se ejecute más de una vez yo uso esto:
Code (fw): Select all Collapse
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.
Posts: 1445
Joined: Mon Oct 10, 2005 02:38 PM
Re: Traer al frente - primer plano
Posted: Sat Aug 10, 2024 04:47 PM
JoseAlvarez wrote:Saludos...

Para evitar que mi aplicación se ejecute más de una vez yo uso esto:
Code (fw): Select all Collapse
if IsExeRunning( ("nombre.exe") )
  MsgInfo( "No puedes abrir dos veces el programa",'Error...')
    release all
    quit
endif
Si, yo también uso esta manera.
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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 851
Joined: Sun Nov 09, 2014 05:01 PM
Re: Traer al frente - primer plano
Posted: Sun Aug 11, 2024 08:15 PM

Excelente! Esa no me la sabía

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.

Continue the discussion