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

时间:2015-04-05 16:48:16

标签: autohotkey wake-on-lan

您有时想在没有按下电源按钮的情况下启动计算机。它可以通过网络使用称为Wake on LAN(WoL)的技术完成。

但是如何在AutoHotkey中完成?

2 个答案:

答案 0 :(得分:2)

要通过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
}

答案 1 :(得分:0)

您可以使用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向指定的MAC地址发送Wake-On-LAN魔术包   并立即退出。示例:/ wol:AABBCCDDEEFF。

     

/wolfile:filename.txt允许您指定带MAC的文本文件   地址唤醒,例如/wolfile:c:\myfile.txt文件是a   纯文本文件,每行包含一个MAC地址。

     

/ wakeall向WOL中配置的所有计算机发送WOL数据包   经理并立即退出。

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