找回密码
 加入
搜索
查看: 2219|回复: 2

[系统综合] DllCall调用引起崩溃问题[已解决]

[复制链接]
发表于 2012-5-21 23:34:28 | 显示全部楼层 |阅读模式
本帖最后由 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调用崩溃。
一直找不到原因,请教高手。谢谢!

 楼主| 发表于 2012-5-22 14:35:34 | 显示全部楼层
本帖最后由 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)
 楼主| 发表于 2012-5-22 14:36:38 | 显示全部楼层
本帖最后由 bitgao 于 2012-5-22 14:38 编辑

DllClose
--------------------------------------------------------------------------------
关闭此前打开过的DLL文件。

DllClose ( dll句柄 )

参数
dll句柄 目标 DLL 的句柄,可由此前调用 DllOpen 函数的返回值获得。
返回值


注意

若给定的 dll句柄 无效则 AutoIt 将抛出一个运行时错误,并且脚本程序将终止!
在脚本程序终止运行时,AutoIt 会自动关闭所有由脚本打开的 DLL 文件;当然了,显式调用 DllClose 函数来关闭 DLL 文件始终是推荐方式
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-2 16:56 , Processed in 0.070870 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表