当前位置: 主页 > 百科 > 计算机编程 > 易语言源码 >
-12 Comments

wol易语言代码

发布于:2016-07-04  |   作者:http://www.zxjsq.net  |   已聚集:人围观

.版本 2


.程序集 窗口程序集_启动窗口

.程序集变量 socket, 整数型


.子程序 __启动窗口_创建完毕

.局部变量 WSAData, WSADataType

.局部变量 sLinger, 字节集

.局部变量 addr, sockaddr_in

.局部变量 ret, 逻辑型


WSAStartup (514, WSAData)

socket = socket (2, 2, 17)

.判断开始 (socket > 0)

    sLinger = { 1, 0 }  ' 1=开关选项 0=空闲时间

    setsockopt (socket, 65535, 32, sLinger, 4)  ' 这句是关键否则发送会失败

    addr.sin_family = 2

    ret = bind (socket, addr, 16) > -1

    .如果真 (ret = 假)

        closesocket (socket)

        socket = 0

        提示标签.标题 = “启动 Socket 失败!”

    .如果真结束


.默认

    提示标签.标题 = “创建 Socket 失败!”

.判断结束



.子程序 _内网按钮_被单击


发送wol (MAC框.内容)


.子程序 _外网按钮_被单击


发送wol (MAC框.内容, IP框.内容, 到整数 (端口框.内容))


.子程序 生成wol包, 字节集

.参数 mac, 文本型

.局部变量 i

.局部变量 字节, 字节型, , "0"

.局部变量 值

.局部变量 machex, 字节型, , "0"

.局部变量 Data, 字节集


mac = 子文本替换 (mac, “:”, “”, , , 真)

mac = 子文本替换 (mac, “-”, “”, , , 真)

.如果真 (取文本长度 (mac) ≠ 12)

    返回 ({  })

.如果真结束

.变量循环首 (1, 取文本长度 (mac), 2, i)

    StrToIntEx (“0x” + 取文本中间 (mac, i, 2), 1, 值)

    加入成员 (字节, 值)

.变量循环尾 ()

.计次循环首 (16, i)

    加入成员 (machex, 字节)

.计次循环尾 ()

Data = { 255, 255, 255, 255, 255, 255 } + 到字节集 (machex)

返回 (Data)


.子程序 发送wol

.参数 mac, 文本型

.参数 ip, 文本型, 可空

.参数 port, 整数型, 可空

.局部变量 Data, 字节集

.局部变量 addr, sockaddr_in

.局部变量 sendlen

.局部变量 lp_ip, 文本型


.如果真 (socket > 0)

    提示标签.标题 = “”

    处理事件 ()

    Data = 生成wol包 (MAC框.内容)

    .如果真 (Data = {  })

        提示标签.标题 = “生成wol包失败!”

        返回 ()

    .如果真结束

    addr.sin_family = 2

    .判断开始 (ip = “”)

        addr.sin_addr = -1  ' -1 广播

    .默认

        ' 外网唤醒

        .如果真 (port > 0)

            addr.sin_port = htons (port)

        .如果真结束

        lp_ip = ip

        .如果真 (判断IP地址 (lp_ip) = 假)

            lp_ip = 转换为IP地址_ (lp_ip)

        .如果真结束

        addr.sin_addr = inet_addr (lp_ip)

    .判断结束

    sendlen = sendto (socket, Data, 取字节集长度 (Data), 0, addr, 16)

    提示标签.标题 = “发送 WOL ” + 选择 (sendlen > 0, “成功!”, “失败!”)

.如果真结束



.子程序 判断IP地址, 逻辑型

.参数 IP, 文本型

.局部变量 str, 文本型, , "0"

.局部变量 pCount

.局部变量 i

.局部变量 pre


str = 分割文本 (IP, “.”, )

pCount = 取数组成员数 (str)

.如果真 (pCount ≠ 4)

    返回 (假)

.如果真结束

.计次循环首 (pCount, i)

    pre = 到整数 (str [i])

    .如果真 (pre < 0 或 pre > 255)

        返回 (假)

    .如果真结束


.计次循环尾 ()

返回 (真)


.子程序 转换为IP地址_, 文本型

.参数 机器名, 文本型

.局部变量 lpHost, 整数型

.局部变量 HOST, HOSTENT

.局部变量 dwIPAddr, 整数型

.局部变量 tmpIPAddr, 字节型, , "0"

.局部变量 i, 整数型

.局部变量 sIPAddr, 文本型


lpHost = gethostbyname (机器名)

.如果真 (lpHost ≠ 0)

    RtlMoveMemory_HOSTENT (HOST, lpHost, 16)

    RtlMoveMemory_整数 (dwIPAddr, HOST.hAddrList, 4)

    重定义数组 (tmpIPAddr, 假, HOST.hLen)

    RtlMoveMemory_字节型 (tmpIPAddr, dwIPAddr, HOST.hLen)

    .计次循环首 (HOST.hLen, i)

        .如果 (i = HOST.hLen)

            sIPAddr = sIPAddr + 到文本 (tmpIPAddr [i])  ' 原来是到文本

        .否则

            sIPAddr = sIPAddr + 到文本 (tmpIPAddr [i]) + “.”  ' 原来是到文本

        .如果结束


    .计次循环尾 ()

.如果真结束

返回 (sIPAddr)


.子程序 _IP框_获得焦点


判断tab (IP框)


.子程序 _端口框_获得焦点


判断tab (端口框)


.子程序 _MAC框_获得焦点


判断tab (MAC框)


.子程序 判断tab

.参数 局_编辑框, 编辑框


.如果真 (GetAsyncKeyState (#Tab键) ≠ 0)

局_编辑框.被选择字符数 = -1

.如果真结束


标签:                   喜欢:收藏