Форум: "Начинающим";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];
ВнизВывести компьютер из спящего режима Найти похожие ветки
← →
Small Donkey (2008-02-23 09:48) [0]Здравствуйте, подскажите пожалуйста как програмно вывести компьютер из спящего режима?
← →
no (2008-02-23 10:15) [1]на кнопку нажать. программно.
← →
{RASkov} © (2008-02-23 16:47) [2]> вывести компьютер из спящего режима?
Съимитировать пушечный выстрел... может проснется...)
← →
{RASkov} © (2008-02-23 17:00) [3]> [0] Small Donkey (23.02.08 09:48)
В спящем режиме ни одна программа не выполняется, ибо питание отключено и в оперативной памяти ничего нет...
Ну и как компьютер вывести ПРОГРАММНО, когда программа не работает????
← →
Cobalt (2008-02-24 09:56) [4]Только внешним механизмом :)
Начиная с человека и заканчивая спецустройством, включающимся в ethernet-разъем по электронному или механическому будильнику :)
Или какое-нито механическое устройство, нажимающее кнопку питания.
← →
VirEx © (2008-02-24 10:07) [5]
или Wake On Lan у сетевухи, или в биосе "пробуждать от входящего звонка на модем"
function WakeOnLan(const Host:string;MAC:String):Boolean;
function HexToInt(const s: string): Integer;
begin
Result := 0;
if Length(s) <= (SizeOf(LongWord) * 2) then
Result := StrToInt("$" + s);
end;
var
WSA:TWSAData;
Addr:TSockAddrIn;
A,B:Integer;
S:TSocket;
//MAC:string;
{
Состав Magic Packet
Вначале идет так называемая “цепочка синхронизации”,
состоящая из 6 байт FF, а затем — MAC-адрес сетевой платы, повторённый 16 раз.
}
Frame:packed record
Sync:array[1..6] of Byte;
MACs:array[1..16,1..6] of Byte;
end;
begin
Result:=False;
//сначало пробуем GetIpNetTable
//MAC:=GetMacFromIP(Host);
//затем из списка
//for i:=0 to MACs.Count-1 do MAC:=MACs[i];
{
//затем через NetBios
if Length(MAC)<>12 then begin
l:=TStringList.Create;
GetMACAddresses(UpperCase(Host),l);
if l.Count>0 then MAC:=l[0];
l.Free;
end;
}
if Length(MAC)<>12 then Exit;
if WSAStartup($0101,WSA)=0 then try
S:=socket(AF_INET,SOCK_DGRAM,PF_UNSPEC);
if S<>INVALID_SOCKET then try
A:=1;
if setsockopt(S,SOL_SOCKET,SO_BROADCAST,@A,SizeOf(A))=0 then begin
FillChar(Frame.Sync,6,$FF);
for A:=1 to 6 do begin
B:=HexToInt(Copy(MAC,A*2-1,2));
Frame.MACs[1,A]:=B;
end;
for A:=2 to 16 do
Frame.MACs[A]:=Frame.MACs[1];
Addr.sin_addr.S_addr:=-1;
Addr.sin_family:=AF_INET;
Addr.sin_port:=IPPORT_ECHO;
Result:=sendto(S,Frame,SizeOf(Frame),0,Addr,SizeOf(Addr))=SizeOf(Frame);
end;
finally
closesocket(S);
end;
finally
WSACleanup;
end;
end;
← →
VirEx © (2008-02-24 10:11) [6]но это только разбудит комьютер, и в случае WOL нужно знать мак адрес заранее
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.23;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c