局域网唤醒 (WoL) - 通过网络启动计算机

Wake on LAN (WoL) - start computers over the network

您有时想在不按电源按钮的情况下启动计算机。它可以通过网络使用称为局域网唤醒 (WoL) 的技术来完成。

但是在 AutoHotkey 中如何实现呢?

要通过 LAN 唤醒计算机,您需要创建并发送所谓的魔法数据包。您只需要知道目标计算机的 mac 地址即可。另外,确保它是 properly set up for WoL.

使用 AHK 中的套接字库可以很容易地唤醒计算机:

#include Socket.ahk ;http://pastebin.com/CtM9p4QG

WakeOnLAN("AABBCCDDEEFF") ;Example  - use the mac address of your target here
ExitApp

WakeOnLAN(mac) {
    magicPacket_HexString := GenerateMagicPacketHex(mac)
    size := CreateBinary(magicPacket_HexString, magicPacket)
    UdpOut := new SocketUDP()
    UdpOut.connect("addr_broadcast", 9)
    UdpOut.enableBroadcast()
    UdpOut.send(&magicPacket, size)
}
GenerateMagicPacketHex(mac) {
    magicPacket_HexString := "FFFFFFFFFFFF"
    Loop, 16
        magicPacket_HexString .= mac
    Return magicPacket_HexString
}
CreateBinary(hexString, ByRef var) { ;Credits to RHCP!
    sizeBytes := StrLen(hexString)//2
    VarSetCapacity(var, sizeBytes)
    Loop, % sizeBytes
        NumPut("0x" SubStr(hexString, A_Index * 2 - 1, 2), var, A_Index - 1, "UChar")
    Return sizeBytes
}

您可以使用 Softperfect Network Scanner(图标为足球的那个),然后使用 AutoHotkey 向其发送命令行。您也可以 运行 移植它,所以您甚至不需要安装任何东西。

netscan := "c:\program files\netscan\netscan.exe"
run, %netscan% /wol:AA:EE:73:43:BB:73

netscan 的命令行语法位于 bottom of the docs page

/wol:MAC sends a Wake-On-LAN magic packet to the specified MAC address and immediately exits. Example: /wol:AABBCCDDEEFF.

/wolfile:filename.txt allows you to specify a text file with MAC addresses to wake-up, e.g. /wolfile:c:\myfile.txt where the file is a plain text file containing one MAC address per line.

/wakeall sends a WOL packet to all computers configured in the WOL manager and immediately quits.

但请记住,您必须在 BIOS 中启用该选项才能使计算机在其 NIC 上接收魔术数据包。