![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Включение компа по сети [D6, WinXP]
Евген © (2002-11-14 12:06:00)Мастера, подскажите как отправить magic packet по локальной сети компу, чтобы включить его. Будем считать, что WOL кабель подсоединен, функция в биосе включена, МАС и IP адреса я знаю. Подскажите, пожалуйста, с помощью какой команды или какого компонента можно это сделать.
Кстати а вырубить как?
Song (2002-11-15 10:58:00) [1]InitiateSystemShutDown()
Евген (2002-11-15 10:50:00) [2]А кто подскажет, как его выключить потом?
Евген (2002-11-14 15:33:00) [3]Спасибо!!!
Александр Спелицин (2002-11-14 14:22:00) [4]D6 + Indy.
program WakeOnLan;
{$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.