PPD 0 Denunciar post Postado Janeiro 7, 2010 Olá, gostaria de saber se é possivel fazer em delphi um programa que monitore minha net.. que fique fazendo um ping e quando cair por um determinado tempo faça uma ligação telefonica através de uma placa de fax modem.. se nao for difícil sobre oque devo procurar,, ou se ja existe um programa assim onde posso encontrar.? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Janeiro 7, 2010 Carra, de uma olhada neste programa que fiz: http://www.4shared.c...ar_Conexo.html. Ele esta incompleto, não esta muito bonito, mas acho que uns 50% do que você precisa. Ele utiliza um ping para verificar a estabilidade de conexão e dar um valor de velocidade com o servidor. A velocidade não é muito precisa, mas para detectar quedas de conexão é muito bom. Veja se é mais ou menos isto que precisa? Se for posto o codigo das funções responsaveis pela leitura do arquivo de ping (Não postei hoje por que os fontes estão em casa) Compartilhar este post Link para o post Compartilhar em outros sites
PPD 0 Denunciar post Postado Janeiro 7, 2010 Carra, de uma olhada neste programa que fiz: http://www.4shared.c...ar_Conexo.html. Ele esta incompleto, não esta muito bonito, mas acho que uns 50% do que você precisa. Ele utiliza um ping para verificar a estabilidade de conexão e dar um valor de velocidade com o servidor. A velocidade não é muito precisa, mas para detectar quedas de conexão é muito bom. Veja se é mais ou menos isto que precisa? Se for posto o codigo das funções responsaveis pela leitura do arquivo de ping (Não postei hoje por que os fontes estão em casa) Olá... se puder me passar o fonte agradeço, não sei se vou poder utilizar alguma coisa, mas é sempre um conhecimento a mais.. essa parte achei algo na net, mas preciso mais da parte do modem se puder me ajudar agradeço.. Compartilhar este post Link para o post Compartilhar em outros sites
Raficcha 1 Denunciar post Postado Janeiro 8, 2010 Bom, o que eu faço neste programa é o seguinte. 1) eu crio um arquivo bat e executo ele e fico esperando ele terminar sua execução 2) ao terminar a execução do arquivo bat, eu trago os resultados que foram salvos em um arquivo (isso eu faço colocando ">c:\endereco\arquivo.txt" no final dos comandos no arquivo bat) Para criar e executar o arquivo bat você pode utilizar este código: Proceudre CriaArquivoPing; var arquivo: TStrings begin arquivo := TStringList.Create; arquivo.Add('echo off'); arquivo.Add('cls'); arquivo.Add('echo Aguarde enquanto a sua conexão é verificada. Isto pode levar alguns minutos'); arquivo.Add('echo.'); arquivo.Add('echo Verificando a estabilidade da conexão'); arquivo.Add('ping -n 10 www.imasters.com.br>C:\resultado.dat'); arquivo.Add('cls'); arquivo.Add('exit'); arquivo.SaveToFile('C:\arquivo.bat'); //executar o ping ShellExecute(self.handle, 'open', 'C:\arquivo.bat', '', PChar(AppPath), SW_HIDE); arquivo.Free; end; e para ler o arquivo bat você pode utilizar esta função: function ReadPingFile(FileName: string): TPingResult; var arq : textfile; temp, temp2 : string; cont, tempInt : integer; Copiando : boolean; begin Result.Host := ''; Result.Ip := ''; Result.TempoMedio := -1; Result.TamanhoPacote := -1; Result.Porcentagem := -1; assignfile(arq, FileName); if (FileExists(FileName)) then begin try Reset(arq); while (not(eof(arq))) do begin Readln(arq, temp); //pegar o host if (Result.Host = '') then begin if (Copy(Temp, 1, 10) = 'Disparando') then begin for cont := 19 to length(temp) do begin if (temp[cont] = ' ') then break; Result.Host := Result.Host+temp[cont]; end; end; end; //pegar o ip if (Result.Ip = '') then begin if (Copy(temp, 1, 12) = 'Resposta de ') then begin for cont := 13 to length(temp) do begin if (temp[cont] = ':') then break; Result.Ip := Result.Ip+temp[cont] end; end; end; //pegar o tamanho dos pacotes if (Result.TamanhoPacote = -1) then begin if (Copy(temp, 1, 12) = 'Resposta de ') then begin temp2 := ''; Copiando := false; for cont := 1 to length(temp) do begin if (temp[cont] = '=') then Copiando := true; if (Copiando = true) then begin if (temp[cont] = ' ') then break; temp2 := temp2+temp[cont]; end; end; temp2 := Copy(temp2, 2, Length(temp2)-1); Result.TamanhoPacote := StrToInt(temp2); end; end; //pegar o tempo médio if (Result.TempoMedio = -1) then begin if (Copy(temp, 1, 5) = ' M') then begin tempInt := 0; temp2 := ''; for cont := 1 to length(temp) do begin if (temp[cont] = '=') then inc(tempInt); if (tempInt > 2) then if (temp[cont] = ' ') then inc(tempInt); if (tempInt = 4) then //3 '=' e 1 espaço begin temp2 := temp2+temp[cont]; end; end; temp2 := copy(temp2, 2, length(temp2)-3); Result.TempoMedio := StrToInt(temp2); end; end; //pegar a porcentagem: if (Result.Porcentagem = -1) then begin if (copy(temp, 1, 12) = ' Pacotes:') then begin temp2 := ''; Copiando := false; for cont := 1 to length(temp) do begin if (temp[cont] = '(') then Copiando := true; if (temp[cont] = '%') then break; if (Copiando = true) then temp2 := temp2+temp[cont]; end; temp2 := Copy(temp2, 2, Length(temp2)-1); Result.Porcentagem := 100-StrToInt(temp2); end; end; end; CloseFile(Arq); except try CloseFile(arq); except end; end; end;' end; esta função retorna um registro do tipo 'TPingResult' que deve ser declarado na sessão "Type" da sua unit e tem a seguinte estrutura: TPingResult = record Host: string; Ip: string; TempoMedio: integer; TamanhoPacote : Integer; Porcentagem: Integer; end; Não esqueça de declarar ShellApi nas uses da sua unit. Chame o ping assim: CriarArquivoPing; e leia os resultados assim ReadPingFile('C:\resultado.dat'); Estas funções são meio antigas, mas espero que seja útil. Compartilhar este post Link para o post Compartilhar em outros sites