Page 1 of 1
SET MULTIPLE OFF
Posted: Mon Jan 16, 2006 4:54 pm
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
Posted: Mon Jan 16, 2006 5:43 pm
by Antonio Linares
Carlos,
IF ISEXERUNNING( CFILENAME( HB_ARGV( 0 ) ) )
RETURN NIL
ENDIF
Posted: Tue Jan 17, 2006 5:07 pm
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
Posted: Tue Jan 17, 2006 7:03 pm
by Antonio Linares
Carlos,
La función IsExeRunning() se implementó en el build del mes de Febrero del 2005.
Posted: Wed Jan 18, 2006 2:37 am
by Carlos Sincuir
Gracias Antonio, ya me funciono, estaba enlazanado las libs de FW24
Saludos.
Carlos Sincuir
Posted: Sun Aug 13, 2006 3:07 pm
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?
Posted: Mon Aug 14, 2006 10:39 am
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.
Posted: Mon Aug 14, 2006 3:43 pm
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
Posted: Mon Aug 14, 2006 11:51 pm
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
Posted: Tue Aug 15, 2006 6:32 am
by Antonio Linares
Quique,
Gracias
Posted: Tue Aug 15, 2006 3:36 pm
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.