All pastes #905957 Raw Edit

GetIP by ParanoidE

public text v1 · immutable
#905957 ·published 2008-02-16 04:28 UTC
rendered paste body
program saveip;

{ GetIP by ParanoidE }

{ Usage: Just exec it and it will save ip's to a file...
ToDo:
-Add Parameters, to set value to edSavefile.
-Add "Autorun.ini" delete file.
-Add Create "Autorun.ini" param. }

uses
  Windows,
  SysUtils,
  Classes,
  Forms,
  Winsock;

{$R *.res}

var
  FinalData: String;
  FileLoaded: String;
  BasicalData: String;
  edSavefile: String;

function GetIPFromHost
(var HostName, IPaddr, WSAErr: string): Boolean;
type
  Name = array[0..100] of Char;
  PName = ^Name;
var
  HEnt: pHostEnt;
  HName: PName;
  WSAData: TWSAData;
  i: Integer;
begin
  Result := False;
  if WSAStartup($0101, WSAData) <> 0 then begin
    WSAErr := 'Winsock doesn''t respond.';
    Exit;
  end;
  IPaddr := '';
  New(HName);
  if GetHostName(HName^, SizeOf(Name)) = 0 then
  begin
    HostName := StrPas(HName^);
    HEnt := GetHostByName(HName^);
    for i := 0 to HEnt^.h_length - 1 do
     IPaddr :=
      Concat(IPaddr,
      IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
    SetLength(IPaddr, Length(IPaddr) - 1);
    Result := True;
  end
  else begin
   case WSAGetLastError of
    WSANOTINITIALISED:WSAErr:='WSANotInitialised';
    WSAENETDOWN      :WSAErr:='WSAENetDown';
    WSAEINPROGRESS   :WSAErr:='WSAEInProgress';
   end;
  end;
  Dispose(HName);
  WSACleanup;
end;

function LoadFile(const FileName: TFileName): string;
begin
  with TFileStream.Create(FileName,
      fmOpenRead or fmShareDenyWrite) do begin
    try
      SetLength(Result, Size);
      Read(Pointer(Result)^, Size);
    except
      Result := '';  // Deallocates memory
      Free;
      raise;
    end;
    Free;
  end;
end;

procedure SaveFile(const FileName: TFileName;
                   const content: string);
begin
  with TFileStream.Create(FileName, fmCreate) do
    try
      Write(Pointer(content)^, Length(content));
    finally
      Free;
    end;
end;

procedure GetIP;
var
  Host, IP, Err: string;
  FileExistence: Boolean;
  FinalData: String;
begin
 edSavefile:='iplist.txt';
 if FileExists(edSavefile) then begin
 FileExistence:=True;
 end else begin
 FileExistence:=False;
 end;
 BasicalData:=
      'Gathered IP''s:'+#10#13;
  SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
  if GetIPFromHost(Host, IP, Err) then begin
    HOST:=Host;
    IP:=IP;
  end;
If FileExistence=False then begin
FinalData:=BasicalData + Host + ' ' + IP;
SaveFile(edSavefile, FinalData);
end else begin
FinalData:=LoadFile(edSavefile)+ #13 + Host + ' ' + IP;
SaveFile(edSavefile, FinalData);
end;
end;

begin
  Application.Initialize;
  Application.Title := 'GetIP';
  GetIP;
  Application.Run;
end.