Olá a todos, gostaria de saber se no windows(Versao qualquer um) há alguma forma de saber se o programa ja esta sendo executado pelo computador.
Grato.
Antonio
Executavel. Como saber se esta sendo usado ?
Moderador: Moderadores
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Antonio, eu utilizo um recurso bem idiota mas funciona blz.
no seu programa principal voce faz:
if file("Emuso.lan")
alert("Este programa já está em uso em outra tela")
cls:quit
else
X_Teste="Estou em uso"
save to Emuso.lan all like X_Teste
endif
na sua rotina de sair do sistema voce faz
erase Emuso.lan
Fácil não...
Só tem um problema!
Se o micro reinicializar no meio da aplicacao o arquivo Emuso.Lan estará lá e nao deixará que a proxima chamada seja realizada... neste caso tem que haver uma valvula de escape
mas funciona blz...
nao esqueca de colocar o comando setcancel(.f.) para nao deixar sair com alt+c.
--
no seu programa principal voce faz:
if file("Emuso.lan")
alert("Este programa já está em uso em outra tela")
cls:quit
else
X_Teste="Estou em uso"
save to Emuso.lan all like X_Teste
endif
na sua rotina de sair do sistema voce faz
erase Emuso.lan
Fácil não...
Só tem um problema!
Se o micro reinicializar no meio da aplicacao o arquivo Emuso.Lan estará lá e nao deixará que a proxima chamada seja realizada... neste caso tem que haver uma valvula de escape
mas funciona blz...
nao esqueca de colocar o comando setcancel(.f.) para nao deixar sair com alt+c.
--
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
EVITAR EXECUTAR EM MULTI-SESSÃO
Só colocar no autoexec.bat para deletar:Krinski escreveu:Só tem um problema!
Se o micro reinicializar no meio da aplicacao o arquivo Emuso.Lan estará lá e nao deixará que a proxima chamada seja realizada... neste caso tem que haver uma valvula de escape
IF EXIST C:\PASTA_ONDE_ESTA_O_SISTEMA\EMUSO.LAN DEL C:\PASTA_ONDE_ESTA_O_SISTEMA\EMUSO.LAN
Mas de todas formas, eu não sou muito a favor deste tipo de recurso não é muito seguro. Pois basta os sistema dar erro ou ser abortado pelo usuário (fechando a janela do WINDOWS com o X). O caminho mais acertado seria ler a memória ou alguma forma de saber se a janela do WINDOWS está aberta. O nosso colega MALIGNO, está vendo uma possibilidade de fazer um LIB. Esperemos talvez algum iluminado consiga cumprir essa proeza.
Um clip-abraço
#-)
Eu uso esta funcao no xp
Código: Selecionar todos
If ! TravaJan()
Cls
Quit
EndIf
**********************************
Function TravaJan()
if ! file("C:\DBF1\CONTROLE.SYS")
errhandle:= fcreate("C:\DBF1\CONTROLE.SYS", 0)
fwrite(errhandle,"[ Arquivo de Controle do Sistema ]")
FClose(errhandle)
errhandle:= fopen("C:\DBF1\CONTROLE.SYS",2+16)
else
errhandle:= fopen("C:\DBF1\CONTROLE.SYS",2+16)
if ferror() != 0
Cls
Alert("O Sistema ja esta sendo executado! Olhe na barra de tarefa...")
Return(.f.)
endif
EndIf
Return(.t.)Daniel
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte

