Fórum Monitorar processo de conexão (RNAAPP) #220617
17/03/2004
0
Tipo assim , deixaria um programa meu em execução (monitorando)...quando o usuário clicar no dial-up ou em qualquer discador para se conectar na internet, meu monitor detectaria e mostraria para o usuário um form com pedido de senha, caso essa senha fosse digitada errada eu mataria o processo de conexão, senão liberaria a conexão com a net......
Notei que em Windows 9x, toda vez que chamo um discador, é executado um tal de Rnaapp, e é esse programa que quero monitorar e matar se for o caso, mas não sei como?
Se puderem me ajudar...
Valeu ..um abraço
Alessandro[/b:9a3440ed13]
[b:9a3440ed13][color=red:9a3440ed13]Título editado pelo Moderador (AZ) - Removido: ´Urgente´[/color:9a3440ed13][/b:9a3440ed13]
Analyst
Curtir tópico
+ 0Posts
17/03/2004
Analyst
Por favor me ajudem.....
Gostei + 0
20/03/2004
Wagsilvasilva
é isso
Wagner
Gostei + 0
20/03/2004
Analyst
[b:b49bf9d944]Obrigado wagsilvasilva, por ser o unico a pelo menos tentar me ajudar.
Com muita persistenca e horas a fim, consegui saber a classe do Rnaapp e consegui o meu objetivo, pelo menos para windows 9x, ME, falta ainda descobrir como fazer isso pra NT e XP, quem sabe alguem do forum sabe para esse ambiente operacional né...
Como gosto de ajudar to disponibilizando o que descobri...valeu carinha.
if FindWindow(´RnaEngCLASS´, nil) > 0 then // se Rnaapp foi executado
PostMessage(FindWindow(´RnaEngCLASS´, nil), WM_CLOSE,0,0); // fecho o aplicativo[/b:b49bf9d944]
Gostei + 0
21/03/2004
Tatuweb
Toda conexão (acesso discado) com a Internet é feita via rasdial.exe. Se você for até o prompt do ms-dos e digitar:
C:\rasdial nome_da_conexao usuario senha
você irá se conectar e os dois computadores ao lado do relógio será exibido. Ex:
C:\rasdial IG tatuweb 123456
irá chamar a conexão IG existente no computador e irá logar se no provedor como usuário tatuweb e senha 123456.
Para se disconectar basta fazer o seguinte:
C:\rasdial IG /DISCONNECT
Se vc fizer isso no MS-DOS verá que todas as mensagens que aparecem na janela de conexão de rede dial-up vão aparecer no prompt. Ex: Linha ocupada, senha/usuário inválido, etc...
Dito isso, vc pode usar o seguinte comando no Delphi para se conectar a um provedor:
ShellExecute (Self.Handle, PChar (´open´), PChar (´rasdial.exe´), PChar (´IG tatuweb 123456´), PChar (´C:´), SW_SHOWMINNOACTIVE);
e usar o seguinte para se desconectar:
ShellExecute (Self.Handle, PChar (´open´), PChar (´rasdial.exe´), PChar (´IG /DISCONNECT´), PChar (´C:´), SW_SHOWMINNOACTIVE);
Para o código acima funcionar é necessário declarar a cláusula uses a unit ShellAPI.
A minha idéia é usar uma rotina para pegar as informações vindas do ms-dos para usar na aplicação. Ex:
ShellExecute (Self.Handle, PChar (´open´), PChar (´rasdial.exe´), PChar (´IG /DISCONNECT´), PChar (´C:´), SW_SHOWMINNOACTIVE); if MsgRetornadaPeloDOS <> ´Não existe conexões´ then // Sinal que o usuário está conectado // logo vou exibir uma caixa de dialogo pedindo senha // se ñ tiver executo o comando para desconecta-lo
Essa rotina poderia estar dentro de um componente Timer, de preferencia com uma thread criada so para fazer essa monitoração para evitar que a performance do programa seja afetada. O fato é que não descobri como pegar essas informações do prompt do DOS.
Bem essa foi uma idéia e quem sabe o inicio de uma solucão. De repente o código pode ser melhorado ou vc pode implementar outra ideia. Só pra finalizar o rasdial.exe não fica na lista de processos como o rnapp e não sei se os comandos acimas são aceitos no Win 9x (No ME, XP e 2000 são aceitos).
Gostei + 0
21/03/2004
Analyst
C:\rasdial nome_da_conexao usuario senha
C:\rasdial IG tatuweb 123456
C:\rasdial IG /DISCONNECT
ShellExecute (Self.Handle, PChar (´open´), PChar (´rasdial.exe´), PChar (´IG tatuweb 123456´), PChar (´C:´), SW_SHOWMINNOACTIVE);
ShellExecute (Self.Handle, PChar (´open´), PChar (´rasdial.exe´), PChar (´IG /DISCONNECT´), PChar (´C:´), SW_SHOWMINNOACTIVE);
ShellExecute (Self.Handle, PChar (´open´), PChar (´rasdial.exe´), PChar (´IG /DISCONNECT´), PChar (´C:´), SW_SHOWMINNOACTIVE); if MsgRetornadaPeloDOS <> ´Não existe conexões´ then // Sinal que o usuário está conectado // logo vou exibir uma caixa de dialogo pedindo senha // se ñ tiver executo o comando para desconecta-lo
[b:01a4c03978]Cara obrigado pela dica, vou ver se consigo estudar esse código e quem sabe resolver isso. Depois te aviso...valeu[/b:01a4c03978]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)