Página 1 de 1
Impedir que o sistema abra DUAS vezes com lib gráfica GTWVT
Enviado: 14 Mar 2006 13:19
por janio
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
Enviado: 12 Nov 2006 05:55
por zazibr
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
Enviado: 19 Jan 2007 11:33
por TerraSoftware
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.
Enviado: 19 Jan 2007 14:46
por rochinha
Amiguinho
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
Enviado: 19 Jan 2007 15:05
por TerraSoftware
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.
Enviado: 19 Jan 2007 17:07
por Luiz
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.
Código: Selecionar todos
hWnd:=HWL_FindWindow( , "titulo da janela") // case sensitive
if hWnd>0
//hwg_SetForegroundWindow(hWnd)
Quit
endif
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