Page 1 of 2
Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Wed May 22, 2013 2:52 pm
by mjaviergutierrez
Hola a todos ! No me funciona SET MUTIPLE OFF WARNING, para evitar dos instancias de la misma aplicacion en la misma pc. Lo pongo en el prog main. Estoy usando HMG 3.0.46. Transcribo el codigo. Ovbio, busque en otros post, no encuentro nada claro, no se si cambio la sintaxis o que paso. Ayuda, please !! Gracias.
Code: Select all
#include "minigui.ch"
#INCLUDE "COMUNES.CH"
DECLARE WINDOW frmPrincipal
Function Main
SET DELETED ON
SET DATE BRITISH
SET CENTURY ON
SET EPOCH TO 1950
SET BROWSESYNC ON
SET NAVIGATION EXTENDED
SET MULTIPLE OFF WARNING
REQUEST DBFNTX
REQUEST DBFDBT
frmPrincipal( )
MAXIMIZE WINDOW frmPrincipal
ACTIVATE WINDOW frmPrincipal
Function FrmPrincipal( )
*... esta funcion arma el form principal con botonitos y otras cositas .....
Return
Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 12:46 am
by Pablo César
Aparentemente, tu código parece estar normal. No hubo cambios sobre
SET MULTIPLE OFF WARNING y aqui hice vários tests y me dieron normales. Habria que analisar tu código. Te muestro algunos ejemplos aqui para que lo compiles y veas si funciona para ti ai:
Code: Select all
#include <hmg.ch>
// #include "minigui.ch"
Function Main ()
/*
SET LANGUAGE TO PORTUGUESE
SET CODEPAGE TO PORTUGUESE
*/
// SET LANGUAGE TO ENGLISH
// SET CODEPAGE TO ENGLISH
SET MULTIPLE OFF WARNING
DEFINE WINDOW Form1 ;
AT 0,0 ;
WIDTH 320 ;
HEIGHT 240 ;
TITLE "Evitando múltiplas executions programa" ;
MAIN
END WINDOW
CENTER WINDOW Form1
ACTIVATE WINDOW Form1
Code: Select all
//================================================================//
// Programa......: Evitando múltiplas execuções do programa
// Programador...: Marcos Antonio Gambeta
// Contato.......: dicasdeprogramacao@yahoo.com.br
// Website.......: http://dicasprog.codigolivre.org.br
//================================================================//
// Linguagem.....: Harbour/xHarbour
// Bibliotecas...: Minigui
// Plataforma....: Windows
//================================================================//
// Este exemplo demonstra como evitar que um programa seja
// executado mais de uma vez.
//================================================================//
// #include "minigui.ch"
#include <hmg.ch>
Function Main ()
nLang := nHex( substr( I2Hex( GetUserLangID() ), 3 ) )
IF nLang == 25
SET LANGUAGE TO RUSSIAN
cLang:="???????"
ELSEIF nLang == 10
SET LANGUAGE TO SPANISH
cLang:="Español"
ELSEIF nLang == 22
SET LANGUAGE TO PORTUGUESE
cLang:="Português"
ELSEIF nLang == 9
SET LANGUAGE TO ENGLISH
cLang:="English"
ENDIF
// configurando para não permitir mais de uma execução
SET MULTIPLE OFF WARNING
// {||test()}
// criando a janela principal
DEFINE WINDOW Form1 ;
AT 0,0 ;
WIDTH 320 ;
HEIGHT 240 ;
TITLE "Evitando múltiplas execuções do programa" ;
MAIN
END WINDOW
CENTER WINDOW Form1
ACTIVATE WINDOW Form1
Return Nil
function test()
msginfo("hi")
return
Static Function nHex( cHex )
Local n, nChar, nResult := 0
Local nLen := Len( cHex )
For n = 1 To nLen
nChar = Asc( Upper( SubStr( cHex, n, 1 ) ) )
nResult += ( ( nChar - If( nChar <= 57, 48, 55 ) ) * ( 16 ^ ( nLen - n ) ) )
Next
Return nResult
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
HB_FUNC ( GETUSERLANGID )
{
hb_retni( GetUserDefaultLangID() );
}
static char * u2Hex( WORD wWord )
{
static far char szHex[ 5 ];
WORD i= 3;
do
{
szHex[ i ] = 48 + ( wWord & 0x000F );
if( szHex[ i ] > 57 )
szHex[ i ] += 7;
wWord >>= 4;
}
while( i-- > 0 );
szHex[ 4 ] = 0;
return szHex;
}
HB_FUNC ( I2HEX )
{
hb_retc( u2Hex( hb_parni( 1 ) ) );
}
#pragma ENDDUMP
Re: Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 1:24 am
by danielmaximiliano
Hola a todos :
yo debo tener el mismo problema en la instalacion de Windows, se debe a que los ejemplos publicados no generan el mensaje de advertencia y la aplicacion de ejecuta todas las veces cuando se la invoca, intente el ejemplo de HMG.3.1.3 y sigue sucediendo...
voy a reinstalar mi Windows OEM.

- Greenshot_2013-05-22_22-13-27.png (76.83 KiB) Viewed 6224 times
Re: Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 2:45 am
by mjaviergutierrez
Gracias Pablo Cesar por responder, compile el codigo que me enviaste tal cual (copiar y pegar), y sigue haciendo lo mismo. O sea habro el programa todas las veces que quiero. Lo que me llama la atencion es que tengo un ejemplo, que ya esta generado el exe y si funciona, (me un msgbox en ingles "A " ahora no se con que se compilo. Estoy donrientdo como chupete en el ....perdon en la oreja. Adjunto imagen del prog. que si funciona. Alguna otra idea ?? Gracias.
Re: Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 3:29 am
by Leopoldo Blancas
Hola...
Lo que quieres es que tu executable solo se ejecute una vez o que solo habra una ventana a la vez???
Saludos
Polo
Re: Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 3:42 am
by Leopoldo Blancas
hola..
Ha ok, entiendo... a mi me pasa lo mismo....
Los amigos del foro nos mandaron este codigo para no abrir varias veces el EXE...
Code: Select all
IF IsExeRunning( cFileNoPath( HB_ArgV( 0 ) ) ) // Sirve para verificar si ya se ejecuto el Exe...
MsgBox( "El programa " + APP_TITLE + " ya esta siendo ejecutado!" )
hWnd := FindWindow( APP_TITLE )
IF hWnd > 0
IF IsIconic( hWnd )
Restore( hWnd )
ELSE
SetForeGroundWindow( hWnd )
ENDIF
ELSE
* MsgStop( "No es possible encontrar el programa !", "Error", , .f. )
ENDIF
ELSE
//EJECUTA EL EXE
ENDIF
Y al final del programa ponemos...
Code: Select all
#pragma BEGINDUMP
#define HB_OS_WIN_USED
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"
HB_FUNC( ISICONIC )
{
hb_retl( IsIconic( ( HWND ) hb_parnl( 1 ) ) );
}
HB_FUNC ( FINDWINDOW )
{
hb_retnl( ( LONG ) FindWindow( 0, hb_parc( 1 ) ) );
}
HB_FUNC( ISEXERUNNING ) // ( cExeNameCaseSensitive ) --> lResult
{
HANDLE hMutex = CreateMutex( NULL, TRUE, ( LPTSTR ) hb_parc(1) );
hb_retl( GetLastError() == ERROR_ALREADY_EXISTS );
ReleaseMutex( hMutex );
}
#pragma ENDDUMP
Espero te ayude mientras vemos que pasa con SET MULTIPLE OFF WARNING...
Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 3:54 am
by Pablo César
mjaviergutierrez wrote:..//.. compile el codigo que me enviaste tal cual ..//.. y sigue haciendo lo mismo.
Compilaste uno o los dos códigos que puse ? (Fueron dos ejemplos).
Re: Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 3:59 am
by Leopoldo Blancas
Hola Daniel, los dos ejemplos... y me pasa lo mismo que a Javier...
Saludos
Polo
Re: Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 3:41 pm
by IMATECH
Try check this link:
viewtopic.php?p=22318#p22318
regards
Re: Porque no me funciona SET MULTIPLE OFF WARNING
Posted: Thu May 23, 2013 4:01 pm
by Rathinagiri
Thank you Ronaldo. I didn't see that.
