AutoHotkey 调用 大漠插件 dm.dll (2018年10月14日修改并测试)作者:徐晓亮 ( aahk )QQ595076941

AutoHotkey 调用 大漠插件 dm.dll
(2018年10月14日修改并测试)作者:徐晓亮 ( aahk )QQ595076941
很久以前的一段代码,贴出来与大家分享,网上ahk调用大漠插件的源代码非常多。
最近事情比较多,感觉比较累,所以源代码编辑和测试可能会暂停一段时间。
;[版本1.0][Win7中等图标测试成功]利用AutoHotkey和大漠插件找图并返回系统全局参数(ByRef按内存地址传递参数)的值
;按内存地址传递参数的目的是为了实现文件直接的参数传递(例如dll文件的参数值传递给exe或者ahk文件)
;(x在内存地址数组中,不在变量中,x只是一个变参指针,不是变量的值)
;在大漠插件版本2.1233下,Win7中等图标下找图测试成功


;定义取值函数,变参指针内存地址引用数组形式参数
ComVar(Type=0xC)
{
	static base := { __Get: "ComVarGet", __Set: "ComVarSet", __Delete: "ComVarDel" }
	; 创建含 1 个 VARIANT 类型变量的数组.  此方法可以让内部代码处理
	; 在 VARIANT 和 AutoHotkey 内部类型之间的所有转换.
	arr := ComObjArray(Type, 1)
	; 锁定数组并检索到 VARIANT 的指针.
	DllCall("oleaut32\SafeArrayAccessData", "ptr", ComObjValue(arr), "ptr*", arr_data)
	; 保存可用于传递 VARIANT ByRef 的数组和对象.
	return { ref: ComObjParameter(0x4000|Type, arr_data), _: arr, base: base }
}
ComVarGet(cv, p*) { ; 当脚本访问未知字段时调用.
	if p.MaxIndex() = "" ; 没有名称/参数, 即 cv[]
		return cv._[0]
}
ComVarSet(cv, v, p*) { ; 当脚本设置未知字段时调用.
	if p.MaxIndex() = "" ; 没有名称/参数, 即 cv[]:=v
		return cv._[0] := v
}
ComVarDel(cv) { ; 当对象被释放时调用.
	; 必须进行这样的处理以释放内部数组.
	DllCall("oleaut32\SafeArrayUnaccessData", "ptr", ComObjValue(cv._))
}

;注册热键 Ctrl + G
^g::
	;测试用AHK调用大漠插件

	;决定当脚本已经运行时跳过对话框并自动替换旧实例
	;效果类似于 Reload 命令.
#SingleInstance Force
	CoordMode, Mouse, Screen
	CoordMode, Pixel, Screen
	SetTitleMatchMode, 2
	SetWorkingDir,%A_ScriptDir%

	;注册ts插件
	RunWait,regsvr32 /i /s "%A_ScriptDir%\dm.dll",,Hide

	;创建ts对象
	dm:=ComObjCreate("dm.dmsoft")

	;设置变参指针数组
	a:=ComVar()
	b:=ComVar()
	x:=ComVar()
	y:=ComVar()

	;用大漠插件 获取鼠标位置.
	dm.GetCursorPos(a.ref,b.ref)

	;用大漠插件 查找指定区域内的图片 位图必须是24位色BMP格式
	dm.FindPic(0,0,2000,2000,"24bmp1.bmp|24bmp2.bmp","000000",0.3,0,X.ref,Y.ref)

	ToolTip, % "图片位于:" X[] "," Y[]  "`n鼠标指针位于:" a[] ","b[] "`n大漠插件版本:"dm.Ver()"`n大漠插件dm.dll的路径:" dm.GetBasePath()"`n剪切板内容:"dm.GetClipboard()"`n网络北京时间:"dm.GetNetTime()

	if x[]>0
	{
		MouseMove,%  x[],y[]
		MouseMove, 20, 30, 50, r
		Click 2
	}
return



 

给TA捐赠
共{{data.count}}人
人已捐赠
其他案例

随身固态U盘内的文件(2018年10月14日修改并测试)(第6次修改)作者:徐晓亮 ( aahk )QQ595076941

2018-10-14 9:00:53

其他案例

长期收集AHK、AU3、Delphi资源(源代码,电子书,视频教程,音频教程) (提醒贴)(草稿版)(免费),AutoHotkey资源未分类打包,(持续更新),(神奇的分享帖子),(2018年10月17日未分类未修改未测试未杀毒),作者:徐晓亮, ( aahk ),QQ595076941

2018-10-18 9:16:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
有新私信 私信列表
搜索