找回密码
 加入
搜索
查看: 13348|回复: 19

[原创] 小技巧 关于提示 $ghGDIPDll 未声明的解决之道

[复制链接]
发表于 2014-11-17 17:55:24 | 显示全部楼层 |阅读模式
有 $ghGDIPDll 变量的旧版脚本在 3.3.12.0 及之后的新版运行时,
都会提示此变量未声明的提示,快速解决只需在头部添加:
Global $ghGDIPDll = 0 语句

一般这类脚本都会有 #Include <GDIPlus.au3>
正规做法应修改此变量为 $__g_hGDIPDll

以上为一点小经验, 留此备忘, 也供遇到此问题的参考!

评分

参与人数 1金钱 +30 收起 理由
gapkiller + 30 很给力!

查看全部评分

发表于 2014-11-17 20:52:10 | 显示全部楼层
先收藏了,謝謝樓主,這個蠻重要的。
发表于 2014-11-18 07:32:41 | 显示全部楼层
謝謝樓主学习了。。。。。
发表于 2014-11-18 12:58:49 | 显示全部楼层
这个问题都单独立贴了
发表于 2014-11-18 13:02:23 | 显示全部楼层
我是来顶前辈的~
发表于 2014-12-24 15:35:01 | 显示全部楼层
非常有用,谢谢分享
发表于 2015-1-17 10:58:13 | 显示全部楼层
非常有用,谢谢分享
发表于 2015-5-12 10:00:16 | 显示全部楼层
新旧版编译器的区别吧,一台电脑能运行,另一台就不行,后来才发现这个问题
发表于 2015-5-18 09:40:52 | 显示全部楼层
thanks 4 sharing!
发表于 2015-7-22 19:58:50 | 显示全部楼层
超级有用的信息!学习了!谢谢!
发表于 2015-8-21 19:35:14 | 显示全部楼层
非常感谢  谢谢非常感谢  谢谢非常感谢  谢谢
发表于 2015-9-17 09:30:37 | 显示全部楼层
技巧最重要3Q
发表于 2015-11-15 19:23:32 | 显示全部楼层
本帖最后由 afan 于 2015-11-15 19:29 编辑

添加 Global $ghGDIPDll = 0,虽然能够解决变量未声明的问题,但如果脚本中有使用类似 DllCalll($ghGDIPDll, .... 之类的话应该还是会有问题的。
如果将  $ghGDIPDll  修改替换为 $__g_hGDIPDll 当然最好,可是,如果你有用回旧版的话,就又需要修改回去了…
如果你有使用各版的需要,可以在自己的脚本上修改一下(仅修改自己的脚本,头文件 GDIPlus.au3、GDIPlusEx.au3 这些都不用管)

添加以下这个函数,并将自己的脚本中所有的 $ghGDIPDll  修改替换为 __GDIPDll_Var() 即可各版通用。
如:
DllCall($ghGDIPDll, "uint", "GdipCloneImage", "hwnd", $hImage, "int*", 0)
改为:
DllCall(__GDIPDll_Var(), "uint", "GdipCloneImage", "hwnd", $hImage, "int*", 0)
Func __GDIPDll_Var()        ;==== 确定 GDIPDll 使用的变量值
        If IsDeclared('__g_hGDIPDll') Then Return Eval('__g_hGDIPDll')
        Return Eval('ghGDIPDll')
EndFunc   ;==>__GDIPDll_Var

评分

参与人数 1金钱 +40 收起 理由
floor6ggg + 40 很给力!

查看全部评分

发表于 2015-12-17 20:18:58 | 显示全部楼层
谢谢,楼主,刚好在查找这个问题...
发表于 2016-9-21 10:33:05 | 显示全部楼层
谢谢,终于找到答案了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-3-29 01:41 , Processed in 0.089637 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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