トップへ(mam-mam.net/)

マジックパケットで遠隔PCを起動(Wake On Lan) ~Delphiソースコード集

検索:

マジックパケットで遠隔PCを起動(Wake On Lan) ~Delphiソースコード集

Delphiを起動してプロジェクトを作成し、オブジェクトを配置し、プロパティを設定する

Delphiを起動し[ファイル]→[新規作成]→[Windows VCLアプリケーション-Delphi]をクリックします。
ツールパレットからTMaskEditをフォームへドラッグ&ドロップします。
  プロパティ
    Name:E_Mac
    EditMask:>AA\-AA\-AA\-AA\-AA\-AA;1;_
    Text:00-00-00-00-00-00
ツールパレットからTEditを更にフォームへドラッグ&ドロップします。
  プロパティ
    Name:E_BroadcastIP
ツールパレットからTButtonをフォームへドラッグ&ドロップします。
ツールパレットからTIdUDPClientをフォームへドラッグ&ドロップします。

プログラミング

変数、Button1をダブルクリックしてOnClickイベント等を以下のソースと同じように入力します。
・・・
implementation

{$R *.dfm}

uses IdGlobal

procedure TForm1.Button1Click(Sender: TObject);
var b:TIdBytes;
    i:integer;
    st:String;
    ar:TArray;
begin

  st:=E_Mac.Text;
  ar:=st.Split([':']);
  if Length(ar)<>6 then exit;

  setLength(b,6*17);
  for i := 0 to 5 do b[i]:=$FF;
  for i := 1 to 16 do
  begin
    b[i*6+0]:=StrToIntDef('$'+ar[0],0);
    b[i*6+1]:=StrToIntDef('$'+ar[1],0);
    b[i*6+2]:=StrToIntDef('$'+ar[2],0);
    b[i*6+3]:=StrToIntDef('$'+ar[3],0);
    b[i*6+4]:=StrToIntDef('$'+ar[4],0);
    b[i*6+5]:=StrToIntDef('$'+ar[5],0);
  end;
  IdUDPClient1.BroadcastEnabled:=True;
  IdUDPClient1.Host:=E_BroadcastIP.Text;
  IdUDPClient1.SendBuffer(b);
  showmessage('PC起動のWOLパケットを送信しました。しばらく待つと起動します。');
end;

end.

実行ボタンを押す

実行ボタンを押すと、コンパイルして起動します。
Edit1にはWOLで起動したいPCのMacアドレスを入力します。
Edit2にはネットワークのブロードキャストIPアドレスを入力します。
(例)192.168.1.255
[ネットワークアドレスが192.168.1.0、サブネットマスクが255.255.255.0の場合]
Button1を押すと「PC起動のWOLパケットを送信しました。しばらく待つと起動します。」と表示され、 UDP/IPでブロードキャストIPアドレスにマジックパケットが送信されます。

解説

まず、遠隔起動対象のPCをUEFI(BIOS)からWake On LAN可能に設定する必要があります。(WOLに対応していないPCもあります。)
また起動対象のPCのLANカードのMACアドレスを調べておく必要があります。
拙作のフリーソフト「Mam マスタブラウザ検索 Ver1.4」等を利用すると調べられます。
マジックパケットとは、&HFFを6バイト+対象MACアドレス6バイト×16回 の合計102バイトのパケットのことです。
Wake On LanではマジックパケットをUDP/IPでブロードキャストIPアドレス宛(UDPで全ノードにブロードキャストに送信、TCPではブロードキャスト送信はできません)に送信します。