Já que com a lib GTWVT pode-se dar um nome a janela do sistema, como impedir que o sistema seja aberto duas vezes??? tem como???
Um abraço,
Janio
Impedir que o sistema abra DUAS vezes com lib gráfica GTWVT
Moderador: Moderadores
Impedir que o sistema abra DUAS vezes com lib gráfica GTWVT
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
usando what32.lib ou dll.lib
#Define _BARRA_DOS_WINDOWS_ "\"
if (empty(CreateMutex( , .T., strtran(GetModuleFileName(),_BARRA_DOS_WINDOWS_,'_') )) .or. (GetLastError() > 0 ) )
//Wvt_Maximize() // restaurando a janela
//MessageBox( 0, " Não é possível executar o programa mais de uma vez", "Lopes-Comércio" )
Alert( hb_ansiToOem( " Não é possível executar o programa mais de uma vez" ) )
__Quit()
endif
#Define _BARRA_DOS_WINDOWS_ "\"
if (empty(CreateMutex( , .T., strtran(GetModuleFileName(),_BARRA_DOS_WINDOWS_,'_') )) .or. (GetLastError() > 0 ) )
//Wvt_Maximize() // restaurando a janela
//MessageBox( 0, " Não é possível executar o programa mais de uma vez", "Lopes-Comércio" )
Alert( hb_ansiToOem( " Não é possível executar o programa mais de uma vez" ) )
__Quit()
endif
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
Fiz o que o colega Zazibr postou e funcionou perfeitamente. Mas, houve um pequeno problema. Não funcionou no Win 95, o sistema operacional retornou um erro dizendo que existe uma referencia a DLL kernel32.dll que naum pode ser resolvida. Alguem sabe por que? Eu imagino que o problema é que a lib what32 naum seja compativel com win 95, mas naum tenho ceteza disso. Alguem pode me ajudar? Apesar que hoje em dia são pouquissimas maquina que tem win 95, mas sabe como é né! A gente quer sempre saber o que esta acontecendo.
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Amiguinho
Até que vc resolva isto pode tentar usar este trechinho de codigo
Até que vc resolva isto pode tentar usar este trechinho de codigo
Código: Selecionar todos
errfile := "epropost.sos"
if file(errfile)
ferase(errfile) // Tenta eliminar o arquivo de controle
if ferror() <> 0
Alert("Sistema ja esta em execucao.")
quit
endif
else
errhandle := fcreate(errfile) // Cria o arquivo de controle
errhandle := FOPEN(errfile,1) // Abre travando o arquivo de controle
endif
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
Caro colega rochinha.
Obrigado por sua disposicao em ajudar. Mas no meu caso naum funciona, basicamente por dois motivos.
1- Tenho clientes que usam Terminal Server, ou seja, tenho o programa aberto muitas vezes dentro da mesma maquina, embora seja em sessoes diferentes.
2- Existe a possibilidade do cliente encerrar o sistema pelo ctrl+alt+del, ou coisa parecida, e sendo assim, na proxima executada o arquivo existiria e naum necessariamente o programa estaria aberto.
A solucao de testar o nome da janela é perfeita, e funcionou muito bem. O problema mesmo esta na questao de naum funcionar no win 95.
Obrigado por sua disposicao em ajudar. Mas no meu caso naum funciona, basicamente por dois motivos.
1- Tenho clientes que usam Terminal Server, ou seja, tenho o programa aberto muitas vezes dentro da mesma maquina, embora seja em sessoes diferentes.
2- Existe a possibilidade do cliente encerrar o sistema pelo ctrl+alt+del, ou coisa parecida, e sendo assim, na proxima executada o arquivo existiria e naum necessariamente o programa estaria aberto.
A solucao de testar o nome da janela é perfeita, e funcionou muito bem. O problema mesmo esta na questao de naum funcionar no win 95.
Tente com a Harbour Windows Library do Marcos Gambeta
(http://br.geocities.com/marcosgambeta/b ... /0001.html)
O codigo abaixo deve vir antes da criação da janela
principal, de preferência nas primeiras linhas do main.
Obs: o hwg_setforegroundwindow é da hwgui, serve para trazer a janela pra frente, eu deixei comentada para evitar erro.
Obs2: é preciso recompilar as libs da HWL com o harbour atual
(http://br.geocities.com/marcosgambeta/b ... /0001.html)
O codigo abaixo deve vir antes da criação da janela
principal, de preferência nas primeiras linhas do main.
Código: Selecionar todos
hWnd:=HWL_FindWindow( , "titulo da janela") // case sensitive
if hWnd>0
//hwg_SetForegroundWindow(hWnd)
Quit
endifObs2: é preciso recompilar as libs da HWL com o harbour atual

