Página 1 de 1
Executavel. Como saber se esta sendo usado ?
Enviado: 21 Ago 2006 12:03
por acf125
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
Enviado: 21 Ago 2006 19:35
por alaminojunior
Até o Windows 98 é facil, agora de Windows 2000 e XP, é complicado pois estes sistemas alocam uma area diferente da memoria cada vez que o sistema é executado.
Neste fórum existem tópicos imensos discutindo este assunto, procure dar uma olhada.
Enviado: 22 Ago 2006 20:49
por Krinski
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.
--
EVITAR EXECUTAR EM MULTI-SESSÃO
Enviado: 25 Ago 2006 08:07
por Pablo César
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
Só colocar no
autoexec.bat para deletar:
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
#-)
Enviado: 31 Ago 2006 08:25
por Daniel
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.)