Code:

{$APPTYPE CONSOLE}

 

uses

SysUtils,

Classes,

IdBaseComponent,

IdComponent,

IdUDPBase,

IdUDPClient;

 

function HexStringToBinString(const HexStr: string): string;

var

i, l: integer;

begin

Result := '';

l := length(HexStr);

l := l div 2;

SetLength(Result, l);

for i := 1 to l do

   if HexToBin(PChar(Copy(HexStr, (i - 1) * 2 + 1, 2)),

     PChar(@Result[i]), 1) = 0 then

     raise Exception.Create('Invalid hex value');

end;

 

procedure SendMagicPacket(MACAddress: string);

var

s, packet: string;

i: integer;

begin

if Length(MACAddress) <> 12 then

   raise Exception.CreateFmt('Invalid MAC Address: %s', [MACAddress]);

packet := HexStringToBinString('FFFFFFFFFFFF');

s := HexStringToBinString(MACAddress);

for i := 1 to 16 do

   packet := packet + s;

with TIdUDPClient.Create(nil) do

try

   Active := true;

   BroadcastEnabled := true;

   Broadcast(packet, 9);

finally

   Free;

end;

end;

 

begin

if ParamCount <> 1 then

   WriteLn('usage: WakeOnLan MACAddress' + #10 + #13 + 'exmple: WakeOnLan 000102030405')

else

   SendMagicPacket(ParamStr(1));

end.

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить