本文整理自网络,侵删。
uses Winsock;
{远程唤醒函数 00-e0-4d-df-7e-8a}
procedure WakeUpPro(MacAddr: string);var WSAData : TWSAData; MSocket : TSocket; SockAddrIn : TSockAddrIn; i : integer; MagicAddr : array[0..5] of Byte; MagicData : array[0..101] of Byte;begin for i := 0 to 5 do MagicAddr[i] := StrToInt('$' + copy(MacAddr, i * 3 + 1, 2)); try WSAStartup($0101, WSAData); MSocket := socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); //创建一个UPD数据报SOCKET. if MSocket = INVALID_SOCKET then exit; i := 1; setsockopt(MSocket, SOL_SOCKET, SO_BROADCAST, PChar(@i), SizeOf(i)); //设置广播 FillChar(MagicData, SizeOf(MagicData), $FF); i := 6; while i < SizeOf(MagicData) do begin Move(MagicAddr, Pointer(Longint(@MagicData) + i)^, 6); Inc(i, 6); end; SockAddrIn.sin_family := AF_INET; SockAddrIn.sin_addr.S_addr := Longint(INADDR_BROADCAST); sendto(MSocket, MagicData, SizeOf(MagicData), 0, SockAddrIn, SizeOf(SockAddrIn)); closesocket(MSocket); WSACleanup; except on E: Exception do //('WakeUpPro ' + MacAddr + ' except!' + E.Message); end;end;
相关阅读 >>
Delphi读取excel文件-统计全部工作表中内容相同单元格出现次数
更多相关阅读请进入《Delphi》频道 >>