DllCall调用引起崩溃问题[已解决]
本帖最后由 bitgao 于 2012-5-22 14:39 编辑脚本如下:
WinActivate("无标题 - 记事本")
$dll1 = DllCall("UserDll.dll","Long","Init","long",58692104)
$dll2 = DllCall("UserDll.dll","Long","KeyPress","Long",65,"Long",10)
$dll3 = DllCall("UserDll.dll","void","End")
调用的三句函数的格式分别为:
long _stdcall Init(long Data)
long _stdcall KeyPress(long VirtualKeyCode, long Count)
long _stdcall End(void)
第一句DllCall返回值不正常,第二句DllCall调用崩溃。
一直找不到原因,请教高手。谢谢!
本帖最后由 bitgao 于 2012-5-22 14:37 编辑
搞清楚了,原来是因为调用之后没有DllClose,导致下一次运行的时候脚本崩溃。
应该这样写:
WinActivate("无标题 - 记事本")
$dll = DllOpen("UserDll.dll")
$dll1 = DllCall("UserDll.dll","Long","Init","long",58692104)
$dll2 = DllCall("UserDll.dll","Long","KeyPress","Long",65,"Long",10)
$dll3 = DllCall("UserDll.dll","void","End")
DllClose($dll) 本帖最后由 bitgao 于 2012-5-22 14:38 编辑
DllClose
--------------------------------------------------------------------------------
关闭此前打开过的DLL文件。
DllClose ( dll句柄 )
参数
dll句柄 目标 DLL 的句柄,可由此前调用 DllOpen 函数的返回值获得。
返回值
无
注意
若给定的 dll句柄 无效则 AutoIt 将抛出一个运行时错误,并且脚本程序将终止!
在脚本程序终止运行时,AutoIt 会自动关闭所有由脚本打开的 DLL 文件;当然了,显式调用 DllClose 函数来关闭 DLL 文件始终是推荐方式。
页:
[1]