森林清风 发表于 2013-4-24 08:49:27

【已解决】请高手帮着看看这段程序为什么总是说子脚本使用了非数组变量?

本帖最后由 森林清风 于 2013-4-24 15:03 编辑

$result = DllCall("Reg.dll", "str","GetCPUID")
MsgBox(0," ",$result)

难道在使用$result这个变量的时候还要事先定义一下它的数组属性吗?

netegg 发表于 2013-4-24 08:54:07

关键是要看看是不是调用有问题,没返回值的话肯定报错

鸟人 发表于 2013-4-24 08:59:01

Reg.dll   和你的脚本是否在同一目录下?

森林清风 发表于 2013-4-24 09:26:30

回复 3# 鸟人

你的意思是说有可能是我的电脑中没有reg.dll的文件造成的?

森林清风 发表于 2013-4-24 09:36:58

回复 2# netegg

大哥,你还是直说了吧,到底怎么写这段程序?

鸟人 发表于 2013-4-24 09:48:06

回复鸟人

你的意思是说有可能是我的电脑中没有reg.dll的文件造成的?
森林清风 发表于 2013-4-24 09:26 http://www.autoitx.com/images/common/back.gif

是的。。。。

森林清风 发表于 2013-4-24 10:05:42

回复 6# 鸟人[/i
   
我再问个问题,如果以后要把这个程序用到其它电脑上去,是不是也要将这个reg.dll文件也一同复制过去呢?这样是不是太不方便了呢?

鸟人 发表于 2013-4-24 10:18:57


$DllPath=@TempDir&'\Reg.dll'
FileInstall ("Reg.dll",$DllPath ,1) ;编译成EXE的时候要把Reg.dll放在本脚本的相同目录下
$result = DllCall($DllPath, "str","GetCPUID")
MsgBox(0," ",$result)

森林清风 发表于 2013-4-24 10:51:38

回复 8# 鸟人

你好,你的这段代码执行后还是原来的错误。然后我就又改了一下,如下所示:
;$DllPath=@TempDir&'\Reg.dll'
$DllPath="e:\20130424\reg.dll"
;FileInstall ("Reg.dll",$DllPath ,1) ;编译成EXE的时候要把Reg.dll放在本脚本的相同目录下
$result = DllCall($DllPath, "str","GetCPUID")
MsgBox(0," ",$result)

并且将这个代码所在的文件也放到了E:\20130424目录下,将reg.dll也放在同一个地方,结果还是原来的错误,不知是为什么?

鸟人 发表于 2013-4-24 12:45:04

换这个DLL吧,
硬盘型号、ID和CPU序列号获取

森林清风 发表于 2013-4-24 14:06:57

回复 10# 鸟人

你这个代码及提供的getinfo.dll经过测试,在改了路径后可以运行,但是很快就被杀软判定为木马隔离掉了,虽然可以在本机将这个文件设置为360或者其它杀软的信认,但是如果要拿到其它电脑上去运行还同样会被各种杀软报为木马,所以实用性不强,在此向你说明一下。对你的帮助我表示非常的感谢!

鸟人 发表于 2013-4-24 14:47:13

刚去 http://www.autoitx.com/forum.php?mod=viewthread&tid=3976&highlight=cpu下了那个Reg.dll
在XP SP3测试正常。请问你用的啥系统?或者去上面链接重下那个DLL 试试。

森林清风 发表于 2013-4-24 14:55:06

回复 12# 鸟人

我使用的是xp sp2

森林清风 发表于 2013-4-24 14:58:48

回复 12# 鸟人

我使用的是xp sp2

试过了,还是原来的问题。

森林清风 发表于 2013-4-24 15:03:13

回复 14# 森林清风

现在,我把那个REG.DLL加上路径就对了。非常感谢!
页: [1]
查看完整版本: 【已解决】请高手帮着看看这段程序为什么总是说子脚本使用了非数组变量?