小技巧 关于提示 $ghGDIPDll 未声明的解决之道
有 $ghGDIPDll 变量的旧版脚本在 3.3.12.0 及之后的新版运行时,都会提示此变量未声明的提示,快速解决只需在头部添加:
Global $ghGDIPDll = 0 语句
一般这类脚本都会有 #Include <GDIPlus.au3>
正规做法应修改此变量为 $__g_hGDIPDll
以上为一点小经验, 留此备忘, 也供遇到此问题的参考! 先收藏了,謝謝樓主,這個蠻重要的。 謝謝樓主学习了。。。。。 这个问题都单独立贴了 我是来顶前辈的~ 非常有用,谢谢分享 非常有用,谢谢分享 新旧版编译器的区别吧,一台电脑能运行,另一台就不行,后来才发现这个问题 thanks 4 sharing! 超级有用的信息!学习了!谢谢! 非常感谢谢谢非常感谢谢谢非常感谢谢谢 技巧最重要3Q 本帖最后由 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]
2