Delphi - база знаний

Разбудить компьютер по сети, Использование Bios Wake-on-Lan


Разбудить компьютер по сети, Использование Bios Wake-on-Lan




{$APPTYPECONSOLE}

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(nildo
  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.

Автор:

Song

Взято из





Содержание раздела