マジックパケットで遠隔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ではブロードキャスト送信はできません)に送信します。