Einzelnen Beitrag anzeigen

Thorti

Registriert seit: 13. Nov 2010
6 Beiträge
 
#7

AW: EIdSocketError

  Alt 3. Jan 2011, 20:46
Delphi-Quellcode:
program IPAdresse;

uses
  Forms, Windows, SysUtils, Variants,
  Classes, StdCtrls, IdBaseComponent,
  IdComponent, IdIPWatch,
  IdTCPConnection, IdTCPClient,IdIcmpClient,
  IdHTTP,IdException, shellAPI, ExtCtrls,
  IniFiles;

{$R *.res}
var
IdHTTP1: TIdHTTP;
Ini,configuration: TIniFile;
ende, anfang, i:integer;
ipaddr, ipseitestr:string;
Uhrzeit, Datum:string;
LoN, LoP: String; // Login Name und Login Passwort
ProgDir: String; // Hier wird der aktuelle Ordner des Programms beschrieben
SEInfo: TShellExecuteInfo; // Unit shell API
WPfad: string; // Ordner für Webdateien: psftp.exe, skript.txt

begin
  
  ProgDir:=GetCurrentDir();
  WPfad:= ProgDir;
  IdHTTP1:=TIdHTTP.Create; // Hier wird ein Element vom Typ IdHTTP erzeugt
  configuration:=TIniFile.Create(ProgDir+'\config.ini');
  LoN:=configuration.readstring('Serverdaten','Username','');
  LoP:=configuration.readstring('Serverdaten','Password','');

Repeat
        ipaddr:=''; // Hiermit wird sichergestellt, dass ipaddr nicht vorher
                      // beschrieben wurden
        ipseitestr:=IdHTTP1.Get('http://www.wieistmeineip.de/');

        anfang:=ansipos('"ip">',IdHTTP1.Get('http://www.wieistmeineip.de/'))+5;
        ende:=ansipos('</h1>',IdHTTP1.Get('http://www.wieistmeineip.de/'))-1;
        Uhrzeit:=timetostr(gettime); //Ausgabe der Uhrzeit
        Datum:=datetostr(date()); // Ausgabe des Datums
        for i:=0 to (ende-anfang) do // Schreiben der IP-Adresse
          ipaddr:=ipaddr+ipseitestr[anfang+i];
          // Hier wird eine INI Datei erstellt.
          ini:=TIniFile.Create(ProgDir+'\AktuelleIP.txt');
          try
            ini.writestring('MessrechnerIP','Datum',Datum);
            ini.writestring('MessrechnerIP','Uhrzeit',Uhrzeit);
            ini.writestring('MessrechnerIP','Adresse',ipaddr);
            finally
            ini.free;

        // Transfer der Webdaten zum Server im Rechenzentrum
        // Als erstes wird der Record SEInfo beschrieben. Dieser wird zum Schluss
        // der Funktion ShellExecuteEx uebergeben.

        FillChar(SEInfo, SizeOf(SEInfo), 0); //Auffüllen von SEInfo und dessen Größe mit 0
        SEInfo.cbSize:=SizeOf(TShellExecuteInfo);
        with SEInfo do
          begin
          fMask:=SEE_MASK_NOCLOSEPROCESS;
          wnd:=Application.Handle;
          lpVerb:=PChar('open');
          lpFile:=PChar(ProgDir+'\psftp.exe');
          lpParameters:=PChar('-l '+LoN+' -pw '+LoP+' Servername -batch -b PutDatei.txt');
          lpDirectory:=PChar(WPfad);
          nShow:=SW_HIDE;
          end; //with SEInfo do
        ShellExecuteEx(@SEInfo);
        sleep(60000);
          end; // try-finally

        else sleep(60000);
Until False;
end. //Anfang
  Mit Zitat antworten Zitat