Porque no me funciona SET MULTIPLE OFF WARNING

HMG en Español

Moderator: Rathinagiri

User avatar
mjaviergutierrez
Posts: 156
Joined: Fri Nov 30, 2012 7:51 pm
DBs Used: DBF
Location: San Lorenzo, Santa Fe, Argentina

Porque no me funciona SET MULTIPLE OFF WARNING

Post 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 
...
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Porque no me funciona SET MULTIPLE OFF WARNING

Post 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   
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
User avatar
danielmaximiliano
Posts: 2625
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: Porque no me funciona SET MULTIPLE OFF WARNING

Post 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
Greenshot_2013-05-22_22-13-27.png (76.83 KiB) Viewed 6018 times
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
User avatar
mjaviergutierrez
Posts: 156
Joined: Fri Nov 30, 2012 7:51 pm
DBs Used: DBF
Location: San Lorenzo, Santa Fe, Argentina

Re: Porque no me funciona SET MULTIPLE OFF WARNING

Post 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.
...
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Porque no me funciona SET MULTIPLE OFF WARNING

Post 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
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Porque no me funciona SET MULTIPLE OFF WARNING

Post 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...
User avatar
Pablo César
Posts: 4059
Joined: Wed Sep 08, 2010 1:18 pm
Location: Curitiba - Brasil

Porque no me funciona SET MULTIPLE OFF WARNING

Post 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).
Last edited by Pablo César on Thu May 23, 2013 3:56 pm, edited 1 time in total.
HMGing a better world
"Matter tells space how to curve, space tells matter how to move."
Albert Einstein
Leopoldo Blancas
Posts: 388
Joined: Wed Nov 21, 2012 7:14 pm
Location: México

Re: Porque no me funciona SET MULTIPLE OFF WARNING

Post by Leopoldo Blancas »

Hola Daniel, los dos ejemplos... y me pasa lo mismo que a Javier...

Saludos
Polo
User avatar
IMATECH
Posts: 188
Joined: Sun May 27, 2012 9:33 pm
Location: Brazil: Goiânia-GO.

Re: Porque no me funciona SET MULTIPLE OFF WARNING

Post by IMATECH »

Try check this link:

viewtopic.php?p=22318#p22318



regards
M., Ronaldo

By: IMATECH

Imation Tecnologia
User avatar
Rathinagiri
Posts: 5481
Joined: Tue Jul 29, 2008 6:30 pm
DBs Used: MariaDB, SQLite, SQLCipher and MySQL
Location: Sivakasi, India
Contact:

Re: Porque no me funciona SET MULTIPLE OFF WARNING

Post by Rathinagiri »

Thank you Ronaldo. I didn't see that. :(
East or West HMG is the Best.
South or North HMG is worth.
...the possibilities are endless.
Post Reply