Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.23;
Скачать: CL | DM;

Вниз

Вывести компьютер из спящего режима   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
8-1177430973
Sholah_Weras
2007-04-24 20:09
2008.03.23
PNG с альфа каналом в DDS.


2-1203867327
Рустам
2008-02-24 18:35
2008.03.23
работа в трее


2-1203861728
batya-x
2008-02-24 17:02
2008.03.23
мерцание на Timage


2-1203579448
Quart
2008-02-21 10:37
2008.03.23
QRLabel


8-1176803790
ZMRaven
2007-04-17 13:56
2008.03.23
DSPack захват видео и одновременное воспроизведение.