#演示【大漠插件】在 MKScript 中的使用

int ret
int hwnd

#自定义标签
start:

#初始化大漠插件的对象: dm.dmsoft
int comId = com_object_new("dm.dmsoft")
println("comId:" + comId)

if comId == 0

    alert("大漠插件还没有注册")
        
    #暂停脚本
    pause(mkFalse)
    
    #跳转到标签: start 处开始运行
    goto start

endif

#函数指针: 将大漠插件对象的"方法"转换为 MKScript 的函数
string (*dm_ver)() = com_object_get_function(comId, "Ver")
int (*dm_get_cursor_pos)(Variant *, Variant *) = com_object_get_function(comId, "GetCursorPos")
int (*dm_set_path)(string) = com_object_get_function(comId, "SetPath")
int (*dm_bind_window)(int, string, string, string, int) = com_object_get_function(comId, "BindWindow")    
int (*dm_unbind_window)() = com_object_get_function(comId, "UnBindWindow")
int (*dm_capture)(int, int, int, int, string) = com_object_get_function(comId, "Capture")
int (*dm_key_down_char)(string) = com_object_get_function(comId, "KeyDownChar")
int (*dm_key_up_char)(string) = com_object_get_function(comId, "KeyUpChar")

println("大漠版本:" + dm_ver())

#设置目录
#ret = dm_set_path("F:\\大漠插件V3.1233")
#println("dm_set_path():" + ret)

#获取当前鼠标位置
Variant varX, varY #定义两个变体类型的变量
ret = dm_get_cursor_pos(varX, varY)
int x = variant_get_int(varX)
int y = variant_get_int(varY)

println("dm_get_cursor_pos():" + ret)
println("当前鼠标位置 x:" + x + ", y:" + y)

#查找窗口
hwnd = window_find("", "窗口的标题栏")

if hwnd == 0

    alert("未找到窗口,请先确认指定的窗口是否显示")
    
    #暂停脚本
    pause(mkFalse)
    
    #跳转到标签: start 处开始运行
    goto start
    
endif

#先绑定窗口为后台模式
ret = dm_bind_window(hwnd, "dx2", "dx", "dx", 0)
println("dm_bind_window():" + ret)

#截图,注意:窗口不能最小化!!!
#测试时发现: 有的时候截图是一片空白图, 解决方案说是要把上面 dm_bind_window() 参数 dx2 改成 dx3 
#ret = dm_capture(0, 0, 1300, 1300, "screen.bmp")
#println("dm_capture():" + ret)

#【后台键盘】:按下 'F' 键
ret = dm_key_down_char("F")
println("dm_key_down_char():" + ret)

#【后台键盘】:松开 'F' 键
ret = dm_key_up_char("F")
println("dm_key_up_char():" + ret)   

#取消绑定后台窗口
ret = dm_unbind_window()
println("dm_unbind_window():" + ret)

println("测试完毕")

#暂停
pause(mkFalse)

goto start