1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| {$V+,B+,X+,T+,P+,H+,J+}
PROGRAM RegIP;
USES Windows,SysUtils,Dialogs,Forms,WinSock,Registry;
{----------------------------------------------------------------}
{ GET MACHINE NAME FUNCTION }
{----------------------------------------------------------------}
FUNCTION GetPCName:String;
VAR Buffer:Array[0..255]of char;
BufferSize:DWORD;
BEGIN
Result:='';
TRY
BufferSize:=sizeOf(Buffer);
GetComputerName(pchar(@Buffer),BufferSize);
Result:=Buffer;
EXCEPT END;
END;
{----------------------------------------------------------------}
{ GET IP FUNCTION }
{----------------------------------------------------------------}
FUNCTION GetIP:String;
VAR WSAData:TWSAData;
Phe:PHostEnt;
BEGIN
Result:='';
TRY
WSAStartup(2,WSAData);
Phe:=GetHostByName(PChar(GetPCName));
WITH Phe^ DO Result:=Format('%d.%d.%d.%d',[
Byte(h_addr^[0]),Byte(h_addr^[1]),
Byte(h_addr^[2]),Byte(h_addr^[3])]);
EXCEPT END;
WSACleanup;
END;
{----------------------------------------------------------------}
{ WRITE IN REGISTER BASE }
{----------------------------------------------------------------}
FUNCTION WriteReg:Boolean;
CONST cle:string='\Software\Team17SoftwareLTD\WormsWorldParty\\NetSettings';
VAR Reg:TRegistry;
BEGIN
Result:=False;
TRY Reg:=TRegistry.Create;
TRY Reg.RootKey:=HKEY_CURRENT_USER;
IF(Reg.OpenKey(cle,True))THEN BEGIN
Reg.WriteInteger('AddressOverride',1);
Reg.WriteString('LocalAddress',GetIP);END;
FINALLY Reg.CloseKey;Reg.Free;END;
Result:=True;
EXCEPT END;
END;
{----------------------------------------------------------------}
{ MAIN }
{----------------------------------------------------------------}
BEGIN
IF NOT(WriteReg)THEN
ShowMessage('Erreur: L''écriture du registre n''a pas s''effectuer!')ELSE
IF(Paramcount=0)THEN ShowMessage('IP écrite dans le registre ('+GetIP+')');
END. |
Partager