SET MULTIPLE OFF

Post Reply
Carlos Sincuir
Posts: 38
Joined: Mon Nov 28, 2005 2:10 pm

SET MULTIPLE OFF

Post by Carlos Sincuir »

Hola,
creo que esta pregunta ya la hicieron anteriormente pero no encuento el mensaje, pero necesito que mi aplicación hecha con FWH+xHarbour no se ejecute dos veces en la misma computadora, y SET MULTIPLE OFF no funciona con xharbour.
Alguien me puede dar de nuevo la solución, Gracias.

Carlos Sincuir
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Carlos,

IF ISEXERUNNING( CFILENAME( HB_ARGV( 0 ) ) )
RETURN NIL
ENDIF
regards, saludos

Antonio Linares
www.fivetechsoft.com
Carlos Sincuir
Posts: 38
Joined: Mon Nov 28, 2005 2:10 pm

Post by Carlos Sincuir »

Antonio,
obtengo el Error: Unresolved external _HB_FUN_ISEXERUNNING ...
Estoy utilizando FWH2.5 + xHarbour

Saludos,
Carlos Sincuir

Antonio Linares wrote:Carlos,

IF ISEXERUNNING( CFILENAME( HB_ARGV( 0 ) ) )
RETURN NIL
ENDIF
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Carlos,

La función IsExeRunning() se implementó en el build del mes de Febrero del 2005.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Carlos Sincuir
Posts: 38
Joined: Mon Nov 28, 2005 2:10 pm

Post by Carlos Sincuir »

Gracias Antonio, ya me funciono, estaba enlazanado las libs de FW24

Saludos.

Carlos Sincuir
User avatar
quique
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am
Contact:

Post by quique »

Antonio Linares wrote:Carlos,

La función IsExeRunning() se implementó en el build del mes de Febrero del 2005.
Antonio ¿como puedo hacer para que el programa que ya está corriendo tome el foco?
Saludos
Quique
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Quique,

Aqui tienes un ejemplo completo funcionando:

Code: Select all

#include "FiveWin.ch"

#define GW_CHILD      5 
#define GW_HWNDNEXT   2

function Main()

   local oWnd 
   
   if IsExeRunning( cFileName( HB_ARGV( 0 ) ) )
      ShowApplication()
   else   
      DEFINE WINDOW oWnd TITLE "Test"
   
      ACTIVATE WINDOW oWnd
   endif   
   
return nil   

function ShowApplication()

   local hWnd := FindWnd( cFileNoExt( HB_ARGV( 0 ) ) )
   
   if hWnd != nil
      SetForeGroundWindow( hWnd )
   endif   
   
return nil   

function FindWnd( cTitle ) 

   local hWnd := GetWindow( GetDesktopWindow(), GW_CHILD ) 

   while hWnd != 0 
      if Upper( cTitle ) $ Upper( GetWindowText( hWnd ) ) 
         return hWnd
      endif 

      hWnd = GetWindow( hWnd, GW_HWNDNEXT ) 
   end 

return nil
Observa que el título de la ventana es igual que el nombre del EXE. En caso de ser distintos, has de modificar el código.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Marco A. Delgado
Posts: 126
Joined: Fri Oct 07, 2005 4:20 pm
Location: Veracruz, México

Post by Marco A. Delgado »

Hola Antonio.

Y como se le hace para que la aplicacion tome el foco, para que se visualize en caso de estar minimizada.

Saludos
Marco A. Delgado
User avatar
quique
Posts: 408
Joined: Sun Aug 13, 2006 5:38 am
Contact:

Post by quique »

Marco A. Delgado wrote:Hola Antonio.

Y como se le hace para que la aplicacion tome el foco, para que se visualize en caso de estar minimizada.

Saludos
Marco A. Delgado
En el código que dio Antonio donde estan los #define agrega:

#define SW_RESTORE 9

y justo antes de setForeGroundWindow( hWnd ) agrega:

if isIconic( hWnd )
showWindow( hWnd, SW_RESTORE )
endIf
Saludos
Quique
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Quique,

Gracias :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Marco A. Delgado
Posts: 126
Joined: Fri Oct 07, 2005 4:20 pm
Location: Veracruz, México

Post by Marco A. Delgado »

Pues no... :(

ni toma el foco, ni se restaura la ventana de la aplicación.

Que podra ser, lo he hecho segun lo indicado.

Saludos
Marco A. Delgado.
Post Reply