xlcwxl 发表于 2010-11-5 22:21:02

[已解决]怎样自定义UDF函数

本帖最后由 xlcwxl 于 2010-11-6 08:31 编辑

MsgBox(0,0,GetIPi($ip))

Func GetIPi($ip)
Local $IPDown = InetGet("http://tool.115.com/ip",@WindowsDir&"\temp\GetIP.dat", 1, 1)
Do
Sleep(10)
Until InetGetInfo($IPDown, 2);检查下载是否完成.
Local $IPData = InetGetInfo($IPDown);获取所有信息
InetClose($IPDown);关闭句柄, 释放资源.
If $IPData = 0 Then;4 - 下载错误值. 这些值可能是任意的,判断这些值是不是非0来决定是不是发生了错误.
$IPstr = StringRegExp(FileRead(@WindowsDir&"\temp\GetIP.dat"), '<td>([^<]+)</td>\s</tr>\s<tr>',3);提取IP地址
$ip = $IPstr

;~ MsgBox(0,0,$ip)
Else
;~ GUICtrlSetData($BJGSD,'获取本机IP失败')
EndIf
EndFunc以上代码错在什么地方?

答案 3#

AUFS 发表于 2010-11-5 23:39:31

#include <ie.au3>

Dim $oIE = _IECreate("http://tool.115.com/ip",1,0,1)
$sHTML = _IEDocReadHTML ($oIE)
$IPstr = StringRegExp($sHTML, '<TD>(.+?)</TD></TR>',3);提取IP地址
_IEQuit($oIE)

MsgBox(64,'提示','IP地址: ' & $IPstr & @CRLF & '归属地:' & $IPstr)

lpxx 发表于 2010-11-5 23:45:11

本帖最后由 lpxx 于 2010-11-5 23:46 编辑

你看看MsgBox(0, 0, GetIPi())

Func GetIPi()
        Local $IPDown = InetGet("http://tool.115.com/ip", @WindowsDir & "\temp\GetIP.dat", 1, 1)
        Do
                Sleep(10)
        Until InetGetInfo($IPDown, 2);检查下载是否完成.
        Local $IPData = InetGetInfo($IPDown);获取所有信息
        InetClose($IPDown);关闭句柄, 释放资源.
        If $IPData = 0 Then;4 - 下载错误值. 这些值可能是任意的,判断这些值是不是非0来决定是不是发生了错误.
                $IPstr = StringRegExp(FileRead(@WindowsDir & "\temp\GetIP.dat"), '<td>([^<]+)</td>\s</tr>\s<tr>', 3);提取IP地址
                $ip = $IPstr
                ;~ MsgBox(0,0,$ip)
                Return $ip
        Else
;~ GUICtrlSetData($BJGSD,'获取本机IP失败')
        EndIf
EndFunc   ;==>GetIPi

lpxx 发表于 2010-11-5 23:49:07

不过最简单的还是帮助中的例子:#include <INet.au3>
MsgBox(0, "", _GetIP())自定义UDF函数,这个貌似需要很多知识的,基础是首选。

xlcwxl 发表于 2010-11-6 08:29:06

谢谢lpxx,少了个 Return $ip

非典男人 发表于 2010-11-10 17:42:44

帮助中的获取时有些慢
页: [1]
查看完整版本: [已解决]怎样自定义UDF函数