MKScript 内置函数


MKScript 提供了鼠标、键盘相关的函数和一些功能性函数,其中鼠标相关的函数以 mouse_ 开头, 键盘相关的函数以 key_ 开头。

[参数]:带中括号[...]的参数表示其为可选参数。
*参数:参数前面带有星号(*),表示函数内部可能会修改该参数的值,该参数必须以一个变量名的形式传递给函数。

 

 

提示:【预处理函数】是指在解析脚本过程中执行的函数,脚本运行过程中不执行,一般用于初始化相关配置。预处理函数

函数 描述
voidmkscript_config_auto_start() 设置 MKScript 脚本加载完成后自动启动,脚本第一次启动不需要按【快捷键】或【按钮】。
   
voidmkscript_hotkey_pause_or_continue_code(int code) 设置 MKScript 脚本运行过程中的【暂停/继续运行】快捷键。
示例:hotkey_pause_or_continue_code(mkVK_F9)
voidmkscript_hotkey_pause_or_continue_ctrl_char(char c) 设置 MKScript 脚本运行过程中的【暂停/继续运行】快捷键。
示例:hotkey_pause_or_continue_ctrl_char('y')
voidmkscript_hotkey_pause_or_continue_shift_char(char c) 设置 MKScript 脚本运行过程中的【暂停/继续运行】快捷键。
示例:hotkey_pause_or_continue_shift_char('y')
voidmkscript_hotkey_pause_or_continue_alt_char(char c) 设置 MKScript 脚本运行过程中的【暂停/继续运行】快捷键。
示例:hotkey_pause_or_continue_alt_char('y')
voidmkscript_hotkey_pause_or_continue_ctrl_alt_char(char c) 设置 MKScript 脚本运行过程中的【暂停/继续运行】快捷键。
示例:hotkey_pause_or_continue_ctrl_alt_char('y')
   
voidmkscript_hotkey_stop_code(int code) 设置 MKScript 脚本运行过程中的【中止运行】快捷键。
示例:hotkey_stop_code(mkVK_F3)
voidmkscript_hotkey_stop_ctrl_char(char c) 设置 MKScript 脚本运行过程中的【中止运行】快捷键。
示例:hotkey_stop_ctrl_char('t')
voidmkscript_hotkey_stop_shift_char(char c) 设置 MKScript 脚本运行过程中的【中止运行】快捷键。
示例:hotkey_stop_shift_char('t')
voidmkscript_hotkey_stop_alt_char(char c) 设置 MKScript 脚本运行过程中的【中止运行】快捷键。
示例:hotkey_stop_alt_char('t')
voidmkscript_hotkey_stop_ctrl_alt_char(char c) 设置 MKScript 脚本运行过程中的【中止运行】快捷键。
示例:hotkey_stop_ctrl_alt_char('t')
   
voidmkscript_window_initial_size(int width, int height) 初始化脚本运行窗口的宽与高,当设置的宽与高同时大于当前屏幕尺寸,窗口将最大化显示。
voidmkscript_window_initial_position(int x, int y) 初始化脚本运行窗口在屏幕上显示的位置。
voidmkscript_window_initial_text(string text) 初始化脚本运行窗口【信息】文本框显示的内容。

 

>> 相关演示代码注册快捷键

函数 描述
voidregister_hotkey(int fsModifiers, int vk, string subFuncName) 注册快捷键。将一个快捷键与一个【子函数】绑定。

参数:
fsModifiers:该参数可以是 0 或如下值的组合:
含义
mkMOD_ALT 1 必须按住ALT键。
mkMOD_CONTROL 2 必须按住CTRL键。
mkMOD_SHIFT 4 必须按住SHIFT键。


vk:快捷键的虚拟键码
subFuncName:子函数的名称,注意:在这里子函数的名称不能加括号 ()


特别说明:在脚本代码执行结束后,才会响应用户按下的快捷键。

voidunregister_hotkey(int fsModifiers, int vk) 取消注册的快捷键。
#示例:注册快捷键
		  
#预处理函数: 设置脚本加载后自动启动
mkscript_config_auto_start()

#子函数
func void f1()

    println("按了 F1")

    #在这时可以通过编写脚本, 实现按下一个键完成多个动作
    #mouse_move_to(100, 100)
    #mouse_left_click(100, 100)

endfunc

#子函数
func void f3()

    println("按了 F3 或 Ctrl + Q ")

    #在这时可以通过编写脚本, 实现按下一个键完成多个动作

    #在这里演示鼠标的移动
    int i
    for i = 1 to 9
        mouse_move_to(i * 100, i * 100)
        sleep(100)
    next

endfunc

#注册快捷键
println("注册快捷键: F1, 调用 f1() 子函数")
register_hotkey(0, mkVK_F1, "f1")
println("注册快捷键: F3, 调用 f3() 子函数")
register_hotkey(0, mkVK_F3, "f3")

println("注册快捷键: CTRL + Q, 调用 f3() 子函数")

#注意:这里的 Q 必须是大写字母
register_hotkey(mkMOD_CONTROL, 'Q', "f3")

 

鼠标函数

函数 描述
voidmouse_move_to(int x, int y) 鼠标移动到屏幕指定坐标位置 (x, y),示例: mouse_move_to(300, 200)
voidmouse_left_click(int x, int y) 鼠标点击左键,在屏幕指定坐标位置 (x, y)
voidmouse_middle_click(int x, int y) 鼠标点击中键,在屏幕指定坐标位置 (x, y)
voidmouse_right_click(int x, int y) 鼠标点击右键,在屏幕指定坐标位置 (x, y)
voidmouse_double_click(int x, int y) 鼠标双击左键,在屏幕指定坐标位置 (x, y)
voidmouse_left_down(int x, int y) 鼠标按下左键,在屏幕指定坐标位置 (x, y)
voidmouse_right_down(int x, int y) 鼠标按下右键,在屏幕指定坐标位置 (x, y)
voidmouse_left_up(int x, int y) 鼠标松开左键,在屏幕指定坐标位置 (x, y)
voidmouse_right_up(int x, int y) 鼠标松开右键,在屏幕指定坐标位置 (x, y)
voidmouse_wheel_down(int x, int y[, int times] [, int interval]) 鼠标滚轮向下滚动,在屏幕指定坐标位置 (x, y),滚轮次数:times,连续滚动的间隔时间:interval
voidmouse_wheel_up(int x, int y[, int times] [, int interval])) 鼠标滚轮向上滚动,在屏幕指定坐标位置 (x, y),滚轮次数:times,连续滚动的间隔时间:interval
intmouse_get_cursor_style([int x, int y]) 返回鼠标当前位置(无参数时)或鼠标移动到屏幕指定坐标位置 (x, y)时的指针形状
voidmouse_get_position(int *x, int *y) 获取当前鼠标在屏幕逻辑分辨率下的坐标位置,坐标数据存放在参数(x, y)
voidmouse_select_text(int x, int y, int x2, int y2) 选择一段可选文本,选择区域从坐标(x, y) 到 (x2, y2)
voidmouse_select_object(int x, int y, int x2, int y2) 选择鼠标可选对象列表,选择区域从坐标(x, y) 到 (x2, y2)

注意:鼠标移动、点击等操作所使用的坐标是屏幕【逻辑分辨率】下的坐标。

#示例:

#获取当前屏幕分辨率x,y轴的缩放比例, 针对屏幕可能使用高 DPI 情况
double x_scale = screen_get_resolution_x_scale()
double y_scale = screen_get_resolution_y_scale()
println("x_scale:" + x_scale + ", y_scale:" + y_scale)

#鼠标移动到屏幕坐标位置(300, 200)
mouse_move_to(300 / x_scale, 200 / y_scale)

#暂停3秒
sleep(3000)

#在屏幕坐标位置(600, 500) 点击鼠标左键
mouse_left_click(600 / x_scale, 500 / y_scale)


提示:

1. 如果当前不是以【管理员帐号】登录Windows系统,并且运行脚本时遇到【鼠标点击无效】的情况:

可以尝试进入 MKScript 文件夹,找到 MKScript.exe 文件,在该文件上点击右键,点击【属性】,勾选【以管理员身份运行此程序】,如下图所示:

注意:这个方案不能保证一定有效。

2. 对于使用 DirectX 与 DirectInput 技术绘制的窗口,MKScript 内置的鼠标、键盘相关函数将失效。

提示:尝试使用 大漠插件 来解决。百度:大漠插件

 

>> 相关演示代码键盘函数

函数 描述
voidkey_char(char c [, int times]) 键盘按下并松开一个键,可选参数 times 表示连续按下并松开的次数,示例:key_char('a', 1)
voidkey_press_char(char c) 键盘按下一个键,示例:key_press_char('y')
voidkey_release_char(char c) 键盘松开一个键,示例:key_release_char('y')
   
voidkey_code(int code [, int times]) 键盘按下并松开一个虚拟键码 code, 可选参数 times 表示连续按下并松开的次数。
voidkey_press_code(int code) 键盘按下一个虚拟键码 code,code 取值范围:1 ~ 254
voidkey_release_code(int code) 键盘松开一个虚拟键码 code
   
voidkey_ctrl_char(char c) 键盘按下并松开一个组合键 ctrl + '?',示例:key_ctrl_char('s')
voidkey_ctrl_code(int code) 键盘按下并松开一个组合键 ctrl + 虚拟键码(code),示例:key_ctrl_code(83)
voidkey_shift_char(char c) 键盘按下并松开一个组合键 shift + '?'
voidkey_shift_code(int code) 键盘按下并松开一个组合键 shift + 虚拟键码(code)
voidkey_alt_char(char c) 键盘按下并松开一个组合键 alt + '?',示例:key_alt_char('s')
voidkey_alt_code(int code) 键盘按下并松开一个组合键 alt + 虚拟键码(code),示例:key_alt_code(83)
voidkey_win_char(char c) 键盘按下并松开一个组合键 win + '?',示例:key_win_char('s')
voidkey_win_code(int code) 键盘按下并松开一个组合键 win + 虚拟键码(code),示例:key_win_code(83)
   
voidkey_ctrl_shift_char(char c) 键盘按下并松开一个组合键 ctrl + shift + '?'
voidkey_ctrl_shift_code(int code) 键盘按下并松开一个组合键 ctrl + shift + 虚拟键码(code)
voidkey_ctrl_alt_char(char c) 键盘按下并松开一个组合键 ctrl + alt + '?'
voidkey_ctrl_alt_code(int code) 键盘按下并松开一个组合键 ctrl + alt + 虚拟键码(code)
voidkey_alt_shift_char(char c) 键盘按下并松开一个组合键 alt + shift + '?'
voidkey_alt_shift_code(int code) 键盘按下并松开一个组合键 alt + shift + 虚拟键码(code)
   
voidkey_press_ctrl() 键盘按下 ctrl 键
voidkey_press_shift() 键盘按下 shift 键
voidkey_press_alt() 键盘按下 alt 键
voidkey_press_win() 键盘按下 win 键
   
voidkey_release_ctrl() 键盘松开 ctrl 键
voidkey_release_shift() 键盘松开 shift 键
voidkey_release_alt() 键盘松开 alt 键
voidkey_release_win() 键盘松开 win 键
   
voidkey_back_space([int times]) 键盘按下并松开 back 键(退格键) , times 表示连续按下并松开的次数。
voidkey_space([int times]) 键盘按下并松开 space 键(空格键) , times 表示连续按下并松开的次数。
voidkey_enter([int times]) 键盘按下并松开 enter 键(回车键) , times 表示连续按下并松开的次数。
voidkey_page_down([int times]) 键盘按下并松开 page down键(向下翻页键) , times 表示连续按下并松开的次数。
voidkey_page_up([int times]) 键盘按下并松开 page up键(向上翻页键) , times 表示连续按下并松开的次数。
voidkey_left([int times]) 键盘按下并松开 ← 键(方向键) , times 表示连续按下并松开的次数。
voidkey_up([int times]) 键盘按下并松开 ↑ 键(方向键) , times 表示连续按下并松开的次数。
voidkey_down([int times]) 键盘按下并松开 ↓ 键(方向键) , times 表示连续按下并松开的次数。
voidkey_right([int times]) 键盘按下并松开 → 键(方向键) , times 表示连续按下并松开的次数。
voidkey_del() 键盘按下并松开 del 键(删除键)
voidkey_home() 键盘按下并松开 home 键
voidkey_end() 键盘按下并松开 end 键
voidkey_esc() 键盘按下并松开 esc 键
voidkey_f5() 键盘按下并松开 F5 键
voidkey_win() 键盘按下并松开 windows 键(键盘左下角 Ctrl 和 Alt 键之间的按键)
voidkey_tab() 键盘按下并松开 tab 键
   
voidkey_ctrl_a() 键盘按下并松开一个组合键 ctrl + a
voidkey_ctrl_c() 键盘按下并松开一个组合键 ctrl + c
voidkey_ctrl_x() 键盘按下并松开一个组合键 ctrl + x
voidkey_ctrl_v() 键盘按下并松开一个组合键 ctrl + v
voidkey_ctrl_f5() 键盘按下并松开一个组合键 ctrl + F5
voidkey_ctrl_z() 键盘按下并松开一个组合键 ctrl + z
voidkey_ctrl_n() 键盘按下并松开一个组合键 ctrl + n
voidkey_ctrl_o() 键盘按下并松开一个组合键 ctrl + o
voidkey_ctrl_w() 键盘按下并松开一个组合键 ctrl + w
voidkey_ctrl_s() 键盘按下并松开一个组合键 ctrl + s
voidkey_win_d() 键盘按下并松开一个组合键 windows键 + d
   
voidinput(string text [, int delay]) 输入一个字符串,支持中文,示例:input("你好,MKScript!")
delay:可选参数, 每次输入完一个字符后的延迟(单位:毫秒), 适用于在浏览器地址栏或搜索框中输入时使用。
voidinput_char(char c) 输入一个字符,不支持中文,示例:input_char('m')
voidinput_int(int v) 输入一个或一串数字, 示例:input_int(32)
voidinput_double(double v, int decimal) 输入一个浮点数,decimal 表示浮点数保留的小数位长度,示例:input_double(3.14, 2)

 

>> 相关演示代码后台鼠标键盘函数

函数 描述
voidwindow_mouse_move_to(int hWnd, int x, int y [, int fwKeys]) 向后台窗口发送消息:鼠标移动,坐标位置 (x, y),其中:hWnd 是窗口的句柄
voidwindow_mouse_left_click(int hWnd, int x, int y [, int fwKeys]) 向后台窗口发送消息:鼠标点击左键,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
voidwindow_mouse_middle_click(int hWnd, int x, int y) 向后台窗口发送消息:鼠标点击中键,坐标位置 (x, y)
voidwindow_mouse_right_click(int hWnd, int x, int y [, int fwKeys]) 向后台窗口发送消息:鼠标点击右键,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
voidwindow_mouse_double_click(int hWnd, int x, int y [, int fwKeys]) 向后台窗口发送消息:鼠标双击左键,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
voidwindow_mouse_left_down(int hWnd, int x, int y [, int fwKeys]) 向后台窗口发送消息:鼠标按下左键,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
voidwindow_mouse_right_down(int hWnd, int x, int y [, int fwKeys]) 向后台窗口发送消息:鼠标按下右键,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
voidwindow_mouse_left_up(int hWnd, int x, int y [, int fwKeys]) 向后台窗口发送消息:鼠标松开左键,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
voidwindow_mouse_right_up(int hWnd, int x, int y [, int fwKeys]) 向后台窗口发送消息:鼠标松开右键,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
voidwindow_mouse_wheel_down(int hWnd, int x, int y [, int fwKeys] [, int times] [, int interval]) 向后台窗口发送消息:鼠标滚轮向下滚动,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
times:可选参数,滚轮次数。
interval:可选参数,连续滚动的间隔时间,当 times > 1 时该参数值才有效。
voidwindow_mouse_wheel_up(int hWnd, int x, int y [, int fwKeys] [, int times] [, int interval]) 向后台窗口发送消息:鼠标滚轮向上滚动,坐标位置 (x, y)
fwKeys:可选参数,指示其它键是否被按下,可选参数值
times:可选参数,滚轮次数。
interval:可选参数,连续滚动的间隔时间,当 times > 1 时该参数值才有效。

注意:鼠标移动、点击等操作所使用的坐标是屏幕【逻辑分辨率】下的坐标。

#示例:

#获取当前屏幕分辨率x,y轴的缩放比例, 针对屏幕可能使用高 DPI 情况
double x_scale = screen_get_resolution_x_scale()
double y_scale = screen_get_resolution_y_scale()
println("x_scale:" + x_scale + ", y_scale:" + y_scale)

#窗口句柄
int hwnd = ...

#向后台窗口(hwnd)发送消息:鼠标点击右键,在坐标位置(300, 200)
window_mouse_right_click(hwnd, 300 / x_scale, 200 / y_scale)

#暂停3秒
sleep(3000)
 
voidwindow_key_code(int hWnd, int code [, int times]) 向后台窗口发送消息:键盘按下并松开一个虚拟键码 code, 可选参数 times 表示连续按下并松开的次数。
voidwindow_key_press_code(int hWnd, int code) 向后台窗口发送消息:键盘按下一个虚拟键码 code,code 取值范围:1 ~ 254
voidwindow_key_release_code(int hWnd, int code) 向后台窗口发送消息:键盘松开一个虚拟键码 code
   
voidwindow_input(int hWnd, string text [, int delay]) 向后台窗口发送消息:输入一个字符串,支持中文。
text:输入的字符串。
delay:可选参数, 每次输入完一个字符后的延迟(单位:毫秒)。
   
intwindow_get_color_at(int hWnd, int x, int y) 获取后台窗口坐标位置(x,y)的颜色值
Bmpwindow_get_bmp(int hWnd [, int x, int y] [, int width, int height]) 获取后台窗口坐标位置(x,y),大小(width, height)的位图。其中 x, y, width, height 都是可选参数。
intwindow_find_color(int hWnd, int color, int *returnX, int *returnY [, int x, int y] [, int width, int height]) 在后台窗口指向的客户区查找颜色(color),如果找到,返回值: 1,坐标信息存放在 returnX, returnY变量中,如果没找到返回值:0
x, y:可选参数,从指定位置开始查找。
width, height :可选参数,从指定区域开始查找。
intwindow_find_bmp(int hWnd, Bmp bmp, int *returnX, int *returnY [, double similarity] [, int threadCount] [, int x, int y] [, int width, int height]) 在后台窗口指向的客户区查找位图(bmp),如果找到,返回值: 1,坐标信息存放在 returnX, returnY变量中,如果没找到返回值:0
similarity:可选参数,用于查找相以的位图,取值范围(0.01 - 1), 其中 1 表示图片需完全匹配。
threadCount:可选参数,开启多线程找图,建议该参数值 = hardware_get_cpu_logical_number() - 1
x, y:可选参数,从指定位置开始查找。
width, height :可选参数,从指定区域开始查找。

提示:位图(bmp) 越小,找图的速度越快,位图尺寸最好控制在 4 x 4 到 8 x 8 范围内。

 

>> 相关演示代码屏幕颜色函数

函数 描述
intscreen_get_color_at(int x, int y) 返回当前屏幕指定坐标位置(x,y)的颜色值
intscreen_get_color_for_mouse_over_at(int x, int y) 该函数会直接移动鼠标到指定坐标位置(x,y)后,读取坐标(x,y)位置的颜色值。
适用于鼠标移动到指定位置,该位置的颜色会发生变化的情况,如网页中会变颜色的链接。
intscreen_find_color(int color, int *returnX, int *returnY) 全屏幕查找颜色值(color),如果找到,返回值: 1,坐标信息存放在 returnX, returnY变量中,如果没找到返回值:0
intscreen_find_color_from_area(int x, int y, int width, int height, int color, int *returnX, int *returnY) 从屏幕指定位置(x,y)指定的搜索区域(宽:width, 高:height)查找颜色值(color) 。如果找到,返回值: 1,坐标信息存放在 returnX, returnY变量中,如果没找到返回值:0
   
intscreen_get_color_count(int x, int y, int width, int height, string color_rule [, double similarity] ) 从屏幕指定位置(x,y)指定的搜索区域(宽:width, 高:height)根据颜色匹配规则(color_rule)搜索符合条件的像素数量并返回。

参数:
x:屏幕x坐标
y:屏幕y坐标
width:搜索区域的宽
height:搜索区域的高
color_rule:颜色匹配规则, 格式为"RRGGBB-DRDGDB",例如"123456-000000|aabbcc-202020"。也支持反色模式。前面加 ^ 即可。比如"^123456-000000|aabbcc-202020"
反色模式是指匹配任意一个指定颜色之外的颜色。比如"^123456|333333"。在匹配时,会匹配除了123456和333333之外的所有颜色。
similarity:可选参数,模糊搜索,取值范围(0.01 - 1.0), 其中 1.0 表示颜色值需完全匹配

intscreen_found_color_count(int x, int y, int width, int height, string color_rule, int count [, double similarity] ) 从屏幕指定位置(x,y)指定的搜索区域(宽:width, 高:height)根据颜色匹配规则(color_rule)搜索符合条件的像素,当搜索到符合条件的数量达到指定数量(count)时,就返回 1, 否则返回 0

参数:
x:屏幕x坐标
y:屏幕y坐标
width:搜索区域的宽
height:搜索区域的高
color_rule:颜色匹配规则, 格式为"RRGGBB-DRDGDB",例如"123456-000000|aabbcc-202020"。也支持反色模式。前面加 ^ 即可。比如"^123456-000000|aabbcc-202020"
反色模式是指匹配任意一个指定颜色之外的颜色。比如"^123456|333333"。在匹配时,会匹配除了123456和333333之外的所有颜色。
count:需要搜索到符合颜色规则的像素数量
similarity:可选参数,模糊搜索,取值范围(0.01 - 1.0), 其中 1.0 表示颜色值需完全匹配

   
voidscreen_get_colors(int x, int y, int w, int h, int colors[][]) 获取当前屏幕指定坐标位置(x,y)右下角指定区域(w:宽,h:高)的颜色值。
colors:一个二维数组,用于存放指定区域的所有颜色值。
这个二维数组的正确定义:int colors[w][h]
适用于和screen_colors_equal()组合判断屏幕一个区域内的图像是否发生了变化。
intscreen_colors_equal(int x, int y, int w, int h, int colors[][]) 判断当前屏幕指定坐标位置(x,y)右下角指定区域(w:宽,h:高)的颜色值是否与 colors[][] 这个二维数组存放的颜色值相同,相同返回:1,不同返回:0
colors:通过 screen_get_colors() 读取屏幕指定区域的颜色值并存放在这个二维数组中。
   
Bmpscreen_get_bmp(int x, int y, int width, int height) 从屏幕指定位置(x,y)截取指定大小(width, height)的位图并返回。
intscreen_bmp_equal(int x, int y, Bmp bmp) 判断一个位图对象(bmp)是否在屏幕指定位置(x, y)出现。是返回值:1, 不是返回值:0
intscreen_find_bmp(Bmp bmp, int *returnX, int *returnY [, double similarity] [, int threadCount]) 全屏幕查找位图(bmp),如果找到,返回值: 1,坐标信息存放在 returnX, returnY变量中,如果没找到返回值:0
similarity:可选参数,用于查找相以的位图,取值范围(0.01 - 1.0), 其中 1.0 表示图片需完全匹配。
threadCount:可选参数,开启多线程找图,建议该参数值 = hardware_get_cpu_logical_number() - 1

提示:位图(bmp) 越小,找图的速度越快,位图尺寸最好控制在 4 x 4 到 8 x 8 范围内。
intscreen_find_bmp_from_area(int x, int y, int width, int height, Bmp bmp, int *returnX, int *returnY [, double similarity] [, int threadCount]) 从屏幕指定位置(x,y)指定的搜索区域(宽:width, 高height)查找位图(bmp) 。如果找到,返回值: 1,坐标信息存放在 returnX, returnY变量中,如果没找到返回值:0
similarity:可选参数,用于查找相以的位图,取值范围(0.01 - 1.0), 其中 1.0 表示图片需完全匹配。
threadCount:可选参数,开启多线程找图,建议该参数值 = hardware_get_cpu_logical_number() - 1

提示:位图(bmp) 越小,找图的速度越快,位图尺寸最好控制在 4 x 4 到 8 x 8 范围内。
   
intscreen_get_physical_width() 获取当前屏幕物理分辨率的宽度,单位:像素
intscreen_get_physical_height() 获取当前屏幕物理分辨率的高度,单位:像素
   
intscreen_get_logical_width() 获取当前屏幕逻辑分辨率的宽度,单位:像素
intscreen_get_logical_height() 获取当前屏幕逻辑分辨率的高度,单位:像素
   
doublescreen_get_resolution_x_scale() 获取当前屏幕分辨率x轴的缩放比例
其值 = 物理分辨率的宽 / 逻辑分辨率的宽
doublescreen_get_resolution_y_scale() 获取当前屏幕分辨率y轴的缩放比例
其值 = 物理分辨率的高 / 逻辑分辨率的高
   
voidscreen_position_physical_to_logical(int x, int y, int *x2, int *y2) 物理分辨率坐标(x, y)转换成逻辑分辨率坐标, 保存到 (x2, y2)
voidscreen_position_logical_to_physical(int x, int y, int *x2, int *y2) 逻辑分辨率坐标(x, y)转换成物理分辨率坐标, 保存到(x2, y2)
   
intscreen_get_width() 获取当前屏幕的宽度,单位:像素
intscreen_get_height() 获取当前屏幕的高度,单位:像素
   
intscreen_get_desktop_width() 获取当前屏幕中【桌面】部分的宽度,不包括任务栏部分,单位:像素
intscreen_get_desktop_height() 获取当前屏幕中【桌面】部分的高度,不包括任务栏部分,单位:像素
   
intscreen_get_dpi() 获取当前屏幕的 DPI (DPI是指每英寸的像素)

提示:屏幕操作相关的函数,例如屏幕截图,屏幕找图所使用的坐标是屏幕【物理分辨率】下的坐标。

 

>> 相关演示代码Bmp 位图函数

函数 描述
intbmp_file_read(string bmpFilePath, Bmp *bmp) 读取一个bmp文件(bmpFilePath), 读取成功返回值:1, 相关位图数据存放在变量bmp中, 加载失败返回值 < 1。
返回值:
0 (文件无法打开)
-1 (文件格式错误)
-2 (位图颜色 < 24位)
intbmp_file_write(string bmpFilePath, Bmp *bmp) 将bmp指向的相关位图数据写入到文件(bmpFilePath),输出格式是 bmp。
成功返回值:1, 失败返回值 < 1。
返回值:0 (文件无法打开)
返回值:-1 (位图数据格式错误)
intbmp_read_data(Bmp *bmp, byte data[], int count) 从字节数组中读取count个字节并生成一个全新的位图对象赋值给bmp。
读取成功返回值:1, 失败返回值 < 1。
返回值:-1 (格式错误)
返回值:-2 (位图颜色 < 24位)
intbmp_get_bytes_len(Bmp bmp) 获取bmp位图对象可输出的字节数组长度。
如果bmp不是一个有效的位图对象,返回值:-1
intbmp_get_bytes(Bmp bmp, byte data[], int count) 获取bmp位图对象的字节数据并存储到长度为count的data字节数组中。
返回值:1 (成功)
返回值:0 (bmp 不是一个有效的位图对象)
intbmp_find_bmp(Bmp b1, Bmp b2, int *returnX, int *returnY [, double similarity] [, int threadCount]) 在位图(b1)中查找位图(b2),如果找到,返回值: 1,坐标信息存放在 returnX, returnY变量中,如果没找到返回值:0
similarity:可选参数,用于查找相以的位图,取值范围(0.01 - 1.0), 其中 1.0 表示图片需完全匹配。
threadCount:可选参数,开启多线程找图,建议该参数值 = hardware_get_cpu_logical_number() - 1

提示:位图(bmp) 越小,找图的速度越快,位图尺寸最好控制在 4 x 4 到 8 x 8 范围内。
intbmp_find_bmp_from_area(Bmp b1, int x, int y, int width, int height, Bmp b2, int *returnX, int *returnY [, double similarity] [, int threadCount]) 从位图(b1)指定位置(x,y)指定的搜索区域(宽:width, 高height)查找位图(b2) 。如果找到,返回值: 1,坐标信息存放在 returnX, returnY变量中,如果没找到返回值:0
similarity:可选参数,用于查找相以的位图,取值范围(0.01 - 1.0), 其中 1.0 表示图片需完全匹配。
threadCount:可选参数,开启多线程找图,建议该参数值 = hardware_get_cpu_logical_number() - 1

提示:位图(bmp) 越小,找图的速度越快,位图尺寸最好控制在 4 x 4 到 8 x 8 范围内。
bmpbmp_clone(Bmp bmp) 克隆一个位图(bmp)并返回。
voidbmp_reset(Bmp bmp) 将位图(bmp)当前占用的内存释放,并重新初始化。
intbmp_equal(Bmp b1, Bmp b2) 对比两个位图对象内容是否一样。如果相同,返回值:1, 不同,返回值:0
intbmp_get_width(Bmp bmp) 获取位图对象的宽。
intbmp_get_height(Bmp bmp) 获取位图对象的高。
intbmp_get_bit_count(Bmp bmp) 获取位图对象的颜色位。
intbmp_get_len(Bmp bmp) 获取位图对象的数据长度。 注意:这个返回值与bmp文件大小不是一回事。

 

字符串函数

函数 描述
intlen(string text) 返回字符串的长度。一个英文字母或一个汉字的长度都是:1
intlen_byte(string text [, string charset])

返回字符串的字节长度。

参数:
text:一个字符串。
charset:可选参数(utf-8 或 gbk),使用指定的字符集将字符串编码为字节序列,并返回字节长度。

intindex_of(string text, string findText [, int startIndex]) 返回要查找的字符串在源字符串中第一次出现的索引,没找到返回 -1
intlast_index_of(string text, string findText [, int startIndex]) 返回要查找的字符串在源字符串中最后一次出现的索引,没找到返回 -1
intstarts_with(string text, string prefix [, int toffset]) 测试字符串 text 从指定索引 toffset 开始的子字符串是否以指定前缀 prefix 开始。

参数:
prefix:前缀。
toffset:可选参数,在字符串 text 中开始查找的位置。

返回:
如果参数 prefix 是字符串 text 从索引 toffset 处开始的子字符串前缀,则返回 1;否则返回 0。
如果 toffset 为负或大于字符串 text 的长度,则结果为 0
intends_with(string text, string suffix) 测试字符串 text 是否以指定的后缀 suffix 结束。

参数:
suffix:后缀。

返回:
如果参数 suffix 是字符串 text 的后缀,则返回 1;否则返回 0。
注意,如果参数 suffix 是空字符串,或者等于字符串 text 则结果为 1。
stringmid(string text, int startIndex [, int len]) 返回一个新字符串,它是原字符串的一个子字符串。
stringreplace(string text, string findText, string replaceTo) 返回一个字符串,其中指定的字符串已经被替换为另一字符串。
stringreplace_first(string text, string findText, string replaceTo) 使用给定的 replaceTo 替换此字符串匹配给定的 findText 的第一个子字符串,并返回替换后的内容。
stringleft(string text, int len) 返回字符串左侧指定数量的字符。
stringright(string text, int len) 返回字符串右侧指定数量的字符。
stringlcase(string text) 返回一个新字符串,其中所有大写字母已转换成小写字母。
stringucase(string text) 返回一个新字符串,其中所有小写字母已转换成大写字母。
stringltrim(string text) 返回一个新字符串,其中字符串左侧空格和 '\t', '\r', '\n' 字符已被删除。
stringrtrim(string text) 返回一个新字符串,其中字符串右侧空格和 '\t', '\r', '\n' 字符已被删除。
stringtrim(string text) 返回一个新字符串,其中字符串两侧空格和 '\t', '\r', '\n' 字符已被删除。
stringspace(int n) 返回一个长度为 n 个空格的字符串。
intis_int(string text) 判断一个字符串是不是整数格式,是:返回 1, 不是:返回 0
intis_numeric(string text) 判断一个字符串是不是数字格式,是:返回 1, 不是:返回 0
intis_date(string text) 判断一个字符串是不是日期格式,是:返回 1, 不是:返回 0

支持的日期格式有两种:
2023-6-1
2023-6-1 13:06:32
ArrayList<string>split(string text, string delimiter) 根据给定的分界符来拆分字符串,并返回执分后的字符串动态数组。
charchar_at(string text, int index) 返回字符串指定索引处的 char 值。
stringbyte_array_to_string(byte in[], int count, [string fromCharset]) 将静态字节数组转换成字符串。

参数:
in:源字节数组
count:字节数组 in 的长度
fromCharset:可选参数(utf-8 或 gbk),使用指定的字符集来解码指定的字节数组 in

返回值:返回由指定字符集 formCharset 来解码指定的字节数组 in 后生成新的字符串。
intstring_to_byte_array(string text, byte out[], int count, [string toCharset]) 将字符串转换成静态字节数组。

参数:
text:源字符串
out:存储转换后生成的字节数组
count:字节数组 out 的长度
toCharset:可选参数(utf-8 或 gbk),使用指定字符集 toCharset 对字符串 in 进行编码。

返回值:转换成功返回转换成字节数组的实际长度(注意:返回值一定 <= count), 失败返回 -1
stringmd5(string text [, string toCharset]) 对字符串进行MD5加密并返回加密后的字符串。

参数:
text:需要加密的字符串。
toCharset:可选项(utf-8 或 gbk),可以先对字符串按指定字符集进行转换后,再进行MD5加密。
stringbase64_encode(string text [, string fromCharset]) 对字符串进行Base64编码并返回编码后的字符串。

参数:
text:需要编码的字符串。
fromCharset:可选项(utf-8 或 gbk),可以先对字符串按指定字符集进行转换后,再进行Base64编码。
stringbase64_encode_data(string text, byte data[], int count) 对字节数组进行Base64编码并返回编码后的字符串。

参数:
data:需要编码的字节数组。
count:字节数组的长度。
intbase64_encode_file(string filePath, string *base64Value) 对文件进行Base64编码。

参数:
filePath:需要编码的文件路径。
base64Value:一个字符串变量名,存储文件进行Base64编码后生成的字符串。

返回值:
含义
1 编码成功
0 文件不存在
-1 打开文件失败
-2 读取文件数据失败
intbase64_decoded_size(string base64Text) 返回解码Base64字符串后的字节长度。

参数:
base64Text:已编码的Base64字符串。
intbase64_decode(string base64Text, string *sourceText [, string fromCharset])

对Base64字符串进行解码。

参数:
base64Text:已编码的Base64字符串。
sourceText:一个字符串变量名,存储解码后的内容。
fromCharset:可选项(utf-8 或 gbk),可以对解码后的字符串按指定字符集进行转换,然后存储到sourceText。

返回值:

含义
1 解码成功
0 失败:base64Text 不是一个有效的Base64字符串
intbase64_decode_to_byte_array(string base64Text, byte data[], int count)

对Base64字符串进行解码,并将解码后的数据存放到 data 字节数组中。

参数:
base64Text:已编码的Base64字符串。
data:存储解码后的字节数组
count:字节数组的长度


返回值:

含义
1 解码成功
0 失败:base64Text 不是一个有效的Base64字符串,或者 data 数组的长度count不够存储解码后的字节数据。

 

数学函数

函数 描述
intabs(int v) 返回一个整数的绝对值。
doubleround(double v, int decimal) 返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果。
Tmax(T m, T n) 返回 m, n 中较大的数。
Tmin(T m, T n) 返回 m, n 中较小的数。
intfloor(double v) 返回比参数 v 小的最大整数。
intceil(double v) 返回比参数 v 大的最小整数。
stringhex([int | long] v) 将 int 或 long 类型的数值 v 转换成16进制,以字符串类型返回。
doublesin(double x) 正弦函数。
doublecos(double x) 余弦函数。
doubletan(double x) 正切函数。
doublesinh(double x) 双曲正弦函数。
doublecosh(double x) 双曲余弦函数。
doubletanh(double x) 双曲正切函数。
doubleasin(double x) 反正弦函数。
doubleacos(double x) 反余弦函数。
doubleatan(double x) 反正切函数。
doubleatan2(double y, double x) 求 y/x 的反正切值。atan2() 是 atan() 的增强版,能够确定角度所在的象限。
doubleexp(double x) 指数函数,返回 e 的 x 次幂
doublelog(double x) 返回 x 的自然对数(基数为 e 的对数)。
doublelog10(double x) 返回 x 的常用对数(基数为 10 的对数)。
doublepow(double x, double y) 返回 x 的 y 次幂,即 xy
doublesqrt(double x) 返回 x 的平方根。
longlabs(long v) 返回 x 的绝对值。
doublefabs(double x) 返回 x 的绝对值。
doubleldexp(double x, int exponent) 返回 x 乘以 2 的 exponent 次幂。
doublefrexp(double x, int *exponent) 把浮点数 x 分解成尾数和指数。返回值是尾数,并将指数存入 exponent 中。
doublemodf(double x, double *integer) 返回 x 的小数部分,符号与 x 相同,并设置 integer 为整数部分。
doublefmod(double x, double y) 返回 x 除以 y 的余数。
voidrandomize() 初始化随机数发生器。
doublernd() 返回 0 到 1 之间的一个浮点随机数。

 

日期时间函数

函数 描述
doubletime([int year, int month, int day, int hour, int minute, int second]) 返回当前时间或指定时间的变体时间(VariantTime),返回值类型:double
doubledate([int year, int month, int day]) 返回当前日期或指定日期的变体时间(VariantTime),返回值类型:double
doublestring_to_date(string text) 将日期格式的字符串转换成变体时间(VariantTime),返回值类型:double

参数:
text:日期格式的字符串

支持的日期格式有两种:
2023-6-1
2023-6-1 13:06:32
   
longtime_s() 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的秒数。
longtime_ms() 返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的毫秒数。
   
intyear([double t]) 返回当前日期的年或指定时间 t(变体时间:VariantTime) 对应的年。
intmonth([double t]) 返回当前日期的月或指定时间 t(变体时间:VariantTime) 对应的月。
intday([double t]) 返回当前日期的日或指定时间 t(变体时间:VariantTime) 对应的日。
inthour([double t]) 返回当前时间的小时或指定时间 t(变体时间:VariantTime) 对应的小时。
intminute([double t]) 返回当前时间的分钟或指定时间 t(变体时间:VariantTime) 对应的分钟。
intsecond([double t]) 返回当前时间的秒或指定时间 t(变体时间:VariantTime) 对应的秒。
intweekday([double t]) 返回当前时间或指定时间 t(变体时间:VariantTime) 对应的星期数。

 

返回值:

星期日:1,星期一:2,星期二:3,...,星期六:7

   
stringget_now() 返回当前日期和时间,格式:2018-06-08 08:30:51
stringget_date_time([double t]) 返回当前日期和时间或指定时间 t(变体时间:VariantTime) 对应的日期和时间,格式:2018-06-08 08:30:51
stringget_date([double t]) 返回当前日期或指定时间 t(变体时间:VariantTime) 对应的日期,格式:2018-06-08
stringget_time([double t]) 返回当前时间或指定时间 t(变体时间:VariantTime) 对应的时间,格式:08:30:51
   
doubledate_add(int type, int n, double date) 日期的加减。

参数:
type:可以是以下常量值
常量名 类型
mkSecond int 1
mkMinute int 2
mkHour int 3
mkDay int 4
mkMonth int 5
mkYear int 6

n:希望添加的间隔数,其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。
date:日期(变体时间:VariantTime)。
longdate_diff_s(double date1, double date2) 计算两个日期时间差,并返回 date2 - date1 的结果,单位:秒。
   
longvariant_time_to_unix_time(double variantTime) 变体时间(VariantTime)转换成Unix时间(单位:秒)并返回。
doubleunix_time_to_variant_time(long unixTime) Unix时间(单位:秒)转换成变体时间(VariantTime)并返回。

 

窗口函数

函数 描述
intwindow_get_mkscript_handle() 返回MKScript窗口的句柄
   
intwindow_show(int hWnd, int cmdShow) 设置指定窗口的显示状态。

函数原型(Windows API): ShowWindow()

参数:
hWnd:窗口的句柄。
cmdShow:指定窗口如何显示,参数取值请参考 ShowWindow()系统常量 列表。

返回值:
如果窗口之前可见,则返回值为非零。如果窗口之前被隐藏,则返回值为零。
intwindow_top(int hWnd, int status) 置顶/取消置顶指定的窗口。

参数:
hWnd:窗口的句柄。
status:status = 1( 窗口置顶),status = 0(取消窗口置顶)。

返回值:
如果函数成功,返回值为非零;如果函数失败,返回值为零。
intwindow_enable(int hWnd, int enable) 启用或禁用向指定窗口或控件的鼠标和键盘输入。禁用输入后,该窗口不会接收到诸如鼠标单击和按键之类的输入。启用输入后,窗口将接收所有输入。

函数原型(Windows API): EnableWindow()

参数:
hWnd:被启用/禁用的窗口句柄
enable:指示是启用还是禁用窗口。如果此参数为1,则启用窗口。如果参数为0,则禁用窗口。

返回值:
如果以前禁用了窗口,则返回值为非零。 如果该窗口先前未禁用,则返回值为零。
intwindow_set_position(int hWnd, int x, int y) 设置窗口的位置。

参数:
hWnd:窗口的句柄
x:窗口左侧的新位置
y:窗口顶部的新位置

返回值:
如果函数成功,返回值为非零;如果函数失败,返回值为零。
intwindow_set_size(int hWnd, int width, int height) 设置窗口的尺寸。

参数:
hWnd:窗口的句柄
width:窗口的新宽度,以像素为单位。
height:窗口的新高度,以像素为单位。

返回值:
如果函数成功,返回值为非零;如果函数失败,返回值为零。
intwindow_set_active(int hWnd) 激活一个窗口。

函数原型(Windows API): SetActiveWindow()

参数:
hWnd:窗口的句柄

返回值:
如果函数成功,则返回值是先前处于活动状态的窗口的句柄。
如果函数失败,则返回值为0。
intwindow_set_foreground(int hWnd) 将创建指定窗口的线程带入前台并激活该窗口。键盘输入直接指向窗口,并且为用户更改了各种视觉提示。系统向创建前景窗口的线程分配的优先级比向其他线程分配的优先级高。

函数原型(Windows API): SetForegroundWindow()

参数:
hWnd:窗口的句柄

返回值:
如果将窗口带到前台,则返回值为非零。
如果未将窗口带到前台,则返回值为零。
intwindow_set_focus(int hWnd) 将键盘焦点设置到指定的窗口。

参数:
hWnd:窗口的句柄

返回值:
如果函数成功,则返回值是以前具有键盘焦点的窗口的句柄。
如果windowHandle参数无效或失败,则返回值为0。
intwindow_set_pos(int hWnd, int hWndInsertAfter,int x, int y, int width, int height, int flags) 改变一个子窗口,弹出式窗口或顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。

函数原型(Windows API): SetWindowPos()

参数详见: SetWindowPos()系统常量 列表。

返回值:
如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
intwindow_set_text(int hWnd, string text) 更改指定窗口标题栏的文本(如果有的话)。如果指定的窗口是控件,则更改控件的文本。

参数:
hWnd:窗口的句柄
text:新标题或控件文本。

返回值:
如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
voidwindow_set_button_checked(int hWnd, int status) 设置单选按钮或复选框的检查状态。

参数:
hWnd:窗口的句柄
status:检查状态。此参数可为下列值之一:
mkBST_CHECKED:将按钮状态设置为选中。
mkBST_INDETERMINATE:将按钮状态设置为灰色,表示不确定状态。仅当按钮具有BS_3STATE或BS_AUTO3STATE样式时,才使用此值。
mkBST_UNCHECKED:将按钮状态设置为清除。
intwindow_set_combo_box_selected_index(int hWnd, int index) 选择组合框列表中一个字符串。如有必要,列表会将字符串滚动到视图中。组合框的编辑控件中的文本将更改以反映新的选择,并且列表中的所有先前选择都将被删除。

参数:
hWnd:窗口的句柄
index:指定要选择的字符串的从零开始的索引。如果此参数为-1,则将删除列表中的任何当前选择,并清除编辑控件。

返回值:
如果成功,则返回值为所选项目的索引。如果index大于列表中的项目数,或者index为-1,则返回值为-1并清除选择。
intwindow_set_combo_box_selected_text(int hWnd, string text) 在组合框列表中搜索以指定字符串中的字符开头的项目。如果找到匹配的项目,则将其选中并复制到编辑控件。

参数:
hWnd:窗口的句柄
text:该字符串包含要搜索的字符。搜索不区分大小写,因此该字符串可以包含大写和小写字母的任意组合。

返回值:
如果找到了字符串,则返回值为所选项目的索引。如果搜索失败,则返回值为-1,并且当前选择不变。
intwindow_get(int hWnd, int cmd) 该函数返回与指定窗口有特定关系(如Z序或所有者)的窗口句柄。

函数原型(Windows API): GetWindow()

参数:
hWnd:窗口的句柄。基于uCmd参数的值,获取到的窗口句柄是与此窗口相对的。
cmd:指定窗口和要获取其句柄的窗口之间的关系,参数取值请参考 GetWindow()系统常量 列表。

返回值:
如果函数成功,则返回值为窗口句柄。如果不存在与指定窗口具有指定关系的窗口,则返回值为0。
intwindow_get_window_rect(int hWnd, int *left, int *top, int *right, int *bottom) 返回指定窗口的边框矩形的尺寸。该尺寸以相对于屏幕坐标左上角的屏幕坐标给出。

函数原型(Windows API): GetWindowRect()

参数:
hWnd:窗口的句柄
left:左侧位置
top: 顶部位置
right:右侧位置
bottom:底部位置

返回值:
如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
intwindow_get_client_rect(int hWnd, int *left, int *top, int *right, int *bottom) 获取窗口客户区的坐标。客户区坐标指定客户区的左上角和右下角。由于客户区坐标是相对窗口客户区的左上角而言的,因此左上角坐标为(0,0)。

函数原型(Windows API): GetClientRect()

参数:
hWnd:窗口的句柄
left:左侧位置
top: 顶部位置
right:右侧位置
bottom:底部位置

返回值:
如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
intwindow_get_size(int hWnd, int *width, int *height) 返回指定窗口的边框矩形的尺寸。

参数:
hWnd:窗口的句柄
width:窗口的宽度
height:窗口的宽度

返回值:
如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
intwindow_get_position_on_screen(int hWnd, int *x, int *y) 返回指定窗口在屏幕上的坐标。

参数:
hWnd:窗口的句柄
x:窗口位于屏幕上的x轴坐标
y:窗口位于屏幕上的y轴坐标

返回值:
如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
intwindow_get_desktop() 返回桌面窗口的句柄。桌面窗口覆盖整个屏幕。

函数原型(Windows API): GetDesktopWindow()

返回值:
函数返回桌面窗口的句柄。
intwindow_get_active() 该函数可以获得与调用线程的消息队列相关的活动窗口的窗口句柄。

函数原型(Windows API): GetActiveWindow()

返回值:
返回值是与调用线程的消息队列相关的活动窗口的句柄。若执行失败,返回0。
intwindow_get_foreground() 获取一个前台窗口的句柄(用户当前工作的窗口)。该系统分配给其他线程比它的前台窗口的线程创建一个稍微更高的优先级。

函数原型(Windows API): GetForegroundWindow()

返回值:
返回值是前景窗口的句柄。在某些情况下,例如某个窗口失去激活状态,前景窗口可以为0。
intwindow_get_focus() 获取具有键盘焦点的窗口的句柄。

返回值:
返回值是具有键盘焦点的窗口的句柄。如果没有与键盘焦点相关联的窗口,则返回值为0。
intwindow_get_from_point(int x, int y) 获得包含指定点的窗口的句柄。

函数原型(Windows API): WindowFromPoint()

参数:
x:屏幕x坐标
y:屏幕y坐标

返回值:
返回值为包含该坐标的窗口的句柄。如果包含指定点的窗口不存在,返回值为0。如果该点在静态文本控件之上,返回值是在该静态文本控件的下面的窗口的句柄。
ArrayList<int>window_get_child_list(int hWnd) 获取一个父窗口的所有子窗口句柄列表。

参数:
hWnd:父窗口的句柄

返回值:
返回父窗口的所有子窗口句柄列表,返回值类型:ArrayList<int>
ArrayList<int>window_get_top_level_list() 获取屏幕上的所有顶层窗口句柄列表。

返回值:
返回屏幕上的所有顶层窗口句柄列表,返回值类型:ArrayList<int>
intwindow_get_combo_box_selected_index(int hWnd) 获取组合列表框中当前所选项目的索引(如果有)。

参数:
hWnd:组合列表框窗口的句柄

返回值:
返回值是当前所选项目的从零开始的索引。如果未选择任何项目,则为-1。
intwindow_get_parent(int hWnd) 返回一个指定子窗口的父窗口句柄。

函数原型(Windows API): GetParent()

参数:
hWnd:子窗口的句柄

返回值:
如果窗口是子窗口,则返回值是父窗口的句柄。如果该窗口是具有WS_POPUP样式的顶级窗口,则返回值是所有者窗口的句柄。如果函数失败,则返回值为0。
intwindow_get_id(int hWnd) 获取指定控件的ID号。

函数原型(Windows API): GetDlgCtrlID()

参数:
hWnd:控件的句柄

返回值:
如果函数成功,则返回值是控件的标识符(ID号)。如果函数失败,则返回值为0。
intwindow_get_item(int hWnd, int id) 获取指定对话框中控件的句柄。

函数原型(Windows API): GetDlgItem()

参数:
hWnd:包含控件的对话框的句柄
id:要检索的控件的标识符。

返回值:
如果函数成功,则返回值是指定控件的窗口句柄。
如果函数失败,则返回值为0,表示对话框句柄无效或不存在的控件。
intwindow_get_next_group_item(int hWnd, int hCtl, int bPrevious) 获取位于 (之前的控件组中第一个控件的句柄,或) 对话框中的指定控件。

函数原型(Windows API): GetNextDlgGroupItem()

参数:
hWnd:要搜索的对话框的句柄。
hCtl:要用作搜索起点的控件的句柄。 如果此参数为 NULL,则该函数使用对话框中的最后一个 (或第一个) 控件作为搜索的起点。
bPrevious:指示函数如何搜索对话框中的控件组。 如果此参数为非零,则函数搜索组中的上一个控件。 如果为 0,则函数搜索组中的下一个控件。

返回值:
如果函数成功,则返回值是控件组中上一个(或下一个)控件的句柄。
如果函数失败,则返回值为 0
intwindow_get_next_tab_item(int hWnd, int hCtl, int bPrevious) 获取第一个控件的句柄,该控件具有位于 (之前的 WS_TABSTOP 样式或) 指定控件之后。

函数原型(Windows API): GetNextDlgTabItem()

参数:
hWnd:包含控件的对话框的句柄
hCtl:要用作搜索起点的控件的句柄。 如果此参数为 0,函数将失败。
bPrevious:指示函数如何搜索对话框。 如果此参数为非零,函数将在对话框中搜索上一个控件。 如果此参数为 0,函数将在对话框中搜索下一个控件。

返回值:
如果函数成功,则返回值是具有 WS_TABSTOP 样式集的上一个(或下一个 )控件的窗口句柄。
如果函数失败,则返回值为 0
stringwindow_get_class_name(int hWnd) 获取指定窗口所属的类的名称。

函数原型(Windows API): GetClassName()

参数:
hWnd:窗口的句柄

返回值:
如果函数成功,则返回值是窗口所属的类字符串。如果函数失败,则返回值是一个空字符串。
stringwindow_get_text(int hWnd) 如果指定的是一个窗口,则返回窗口标题栏的文本。如果指定的窗口是控件,则返回控件的文本。

参数:
hWnd:窗口的句柄

返回值:
如果函数成功,则返回值是窗口标题栏文本或控件的文本。如果函数失败,则返回值是一个空字符串。
intwindow_is_iconic(int hWnd) 确定指定的窗口是否最小化(图标)。

函数原型(Windows API): IsIconic()

参数:
hWnd:窗口的句柄

返回值:
如果窗口未最小化,返回值为0;如果窗口已最小化,返回值为非零。
intwindow_is_zoomed(int hWnd) 确定窗口是否最大化。

函数原型(Windows API): IsZoomed()

参数:
hWnd:窗口的句柄

返回值:
如果窗口已最大化,则返回值为非零;如果窗口未最大化,则返回值为零。
intwindow_is_visible(int hWnd) 确定指定窗口的可见性状态。

函数原型(Windows API): IsWindowVisible()

参数:
hWnd:窗口的句柄

返回值:
如果指定的窗口可见,返回值为非零;如果指定的窗口不可见,返回值为零。
即使窗口处于最小化状态或被其他窗口遮盖,函数返回值也为非零。
intwindow_is_enabled(int hWnd) 判断指定的窗口是否允许接受键盘或鼠标输入。

函数原型(Windows API): IsWindowEnabled()

参数:
hWnd:窗口的句柄

返回值:
若窗口允许接受键盘或鼠标输入,则返回非0值,若窗口不允许接受键盘或鼠标输入,则返回值为0。
intwindow_is_button_checked(int hWnd) 获取单选按钮或复选框的检查状态。

参数:
hWnd:窗口的句柄

返回值:
如果按钮被选中,返回值:1,如果按钮呈灰色,指示不确定的状态,返回值:2,如果按钮未选中,返回值:0
intwindow_screen_to_client(int hWnd, int *x, int *y) 将屏幕坐标转换成客户区坐标。

函数原型(Windows API): ScreenToClient()

参数:
hWnd:窗口的句柄
x:屏幕x坐标
y:屏幕y坐标

返回值:
如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
intwindow_client_to_screen(int hWnd, int *x, int *y) 将客户区坐标转换成屏幕坐标。

函数原型(Windows API): ClientToScreen()

参数:
hWnd:窗口的句柄
x:客户区x坐标
y:客户区y坐标

返回值:
如果函数成功,则返回值为非零。如果函数失败,则返回值为零。
intwindow_find(string className, string windowName) 获取顶级窗口的句柄,该窗口的类名和窗口名与指定的字符串匹配。此功能不搜索子窗口。此功能不执行区分大小写的搜索。要从指定的子窗口开始搜索子窗口,请使用window_find_ex函数。

函数原型(Windows API): FindWindow()

参数:
className:指定窗口类名称。如果className是一个空字符串,它将找到标题与windowName参数匹配的任何窗口。
windowName:窗口名称(窗口标题)。如果此参数为空字符串,则所有窗口名称均匹配。

返回值:
如果函数成功,则返回值是具有指定类名和窗口名的窗口的句柄。
如果函数失败,则返回值为0。
intwindow_find_ex(int hWndParent, int hWndChildAfter, string className, string windowName) 获取其类名和窗口名与指定的字符串匹配的窗口的句柄。该功能搜索子窗口,从指定子窗口之后的子窗口开始。此功能不执行区分大小写的搜索。

函数原型(Windows API): FindWindowEx()

参数:
hWndParent:父窗口要搜索其子窗口的句柄。
如果hwndParent为0,则该函数使用桌面窗口作为父窗口。该功能在作为桌面子窗口的窗口之间搜索。
如果hwndParent为mkHWND_MESSAGE(-3),则该函数搜索所有仅消息窗口。

hWndChildAfter:子窗口的句柄。
搜索从Z顺序的下一个子窗口开始。子窗口必须是hwndParent的直接子窗口,而不仅仅是后代窗口。
如果hwndChildAfter为0,则搜索从hwndParent的第一个子窗口开始。
请注意,如果hwndParent和hwndChildAfter均为0,则该函数将搜索所有顶级窗口和仅消息窗口。

className:指定窗口类名称。如果className是一个空字符串,它将找到标题与windowName参数匹配的任何窗口。

windowName:窗口名称(窗口标题)。如果此参数为空字符串,则所有窗口名称均匹配。

返回值:
如果函数成功,则返回值是具有指定类和窗口名称的窗口的句柄。
如果函数失败,则返回值为0。
intwindow_redraw(int hWnd, int left, int top, int right, int bottom, int flags) 根据 flags 设置,重画全部或部分窗口。

函数原型(Windows API): RedrawWindow()

参数:
hWnd:要重画的窗口的句柄。零表示更新桌面窗口。
left, top, right, bottom:窗口中需要重画的一个矩形区域。
flags:一个或多个重绘标志。此参数可用于使窗口无效或验证,控制重新绘制以及控制哪些窗口受window_redraw影响。参数取值请参考 RedrawWindow()系统常量 列表。

返回值:
非零表示成功,零表示失败。
intwindow_send_message(int hWnd, int msg, int wParam, int lParam) 将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回。要将消息发布到线程的消息队列中并立即返回,请使用window_post_message函数。

函数原型(Windows API): SendMessage()

参数:
hWnd:窗口的句柄,其窗口过程将接收到该消息。如果此参数为mkHWND_BROADCAST(65535),则消息将发送到系统中的所有顶级窗口,包括禁用或不可见的无主窗口,重叠的窗口和弹出窗口;但是消息不会发送到子窗口。
msg:要发送的消息。
wParam:指定附加的消息特定信息。
lParam:指定附加的消息特定信息。

返回值:
返回值指定消息处理的结果;这取决于发送的消息。
intwindow_send_message_timeout(int hWnd, int msg, int wParam, int lParam, int flags, int timeout, int *result) 将指定的消息发送到一个或多个窗口。此函数为指定的窗口调用窗口程序,并且,如果指定的窗口属于不同的线程,直到窗口程序处理完消息或指定的超时周期结束函数才返回。如果接收消息的窗口和当前线程属于同一个队列,窗口程序立即调用,超时值无用。

函数原型(Windows API): SendMessageTimeout()

参数:
hWnd:窗口的句柄,其窗口过程将接收到该消息。如果此参数为mkHWND_BROADCAST(65535),则消息将发送到系统中的所有顶级窗口,包括禁用或不可见的无主窗口,重叠的窗口和弹出窗口;但是消息不会发送到子窗口。
msg:要发送的消息。
wParam:指定附加的消息特定信息。
lParam:指定附加的消息特定信息。
flags:指定如何发送消息。此参数可为下列值的组合:
mkSMTO_ABORTIFHUNG:如果接收进程处于“hung”状态,不等待超时周期结束就返回。
mkSMTO_BLOCK:阻止调用线程处理其他任何请求,直到函数返回。
mkSMTO_NORMAL:调用线程等待函数返回时,不被阻止处理其他请求。
mkSMTO_NOTIMEOUTIFNOTHUNG:Windows 95及更高版本:如果接收线程没被挂起,当超时周期结束时不返回。
timeout:为超时周期指定以毫秒为单位的持续时间。如果该消息是一个广播消息,每个窗口可使用全超时周期。例如,如果指定5秒的超时周期,有3个顶层窗回未能处理消息,可以有最多15秒的延迟。
result:指定消息处理的结果,依赖于所发送的消息。

返回值:
如果函数调用成功,返回非零值。如果函数调用失败,或超时,返回值是零。
intwindow_post_message(int hWnd, int msg, int wParam, int lParam) 将一个消息放入(寄送)到与指定窗口创建的线程相联系消息队列里,不等待线程处理消息就返回,是异步消息模式。

函数原型(Windows API): PostMessage()

参数:
hWnd:窗口的句柄,其窗口过程将接收到该消息。如果此参数为mkHWND_BROADCAST(65535),则消息将发送到系统中的所有顶级窗口,包括禁用或不可见的无主窗口,重叠的窗口和弹出窗口;但是消息不会发送到子窗口。
msg:要发送的消息。
wParam:指定附加的消息特定信息。
lParam:指定附加的消息特定信息。

返回值:
返回值指定消息处理的结果;这取决于发送的消息。
intmake_wparam(int low, int high) 创建一个值,用作消息中的 wParam 参数。

函数原型: C 语言中的 MAKEWPARAM 宏。

参数:
low:低位字。
high:高位字。

返回值:
返回值是一个32位值。
intmake_lparam(int low, int high) 创建一个值,用作消息中的 lParam 参数。

函数原型: C 语言中的 MAKELPARAM 宏。

参数:
low:低位字。
high:高位字。

返回值:
返回值是一个32位值。
intregister_window_message(string text) 定义一个新的窗口消息,保证该消息在系统范围内是唯一的。
通常调用 window_send_message() 或者 window_post_message() 函数时,可以使用该函数返回的消息值。

函数原型(Windows API): RegisterWindowMessage()

参数:
text:要注册的消息。

返回值:

如果成功注册消息,则返回值是范围0xC000到0xFFFF的消息标识符。

如果函数失败,则返回值为零。

intmake_copy_data(int dwData, int lpData, int cbData) 创建一个 COPYDATASTRUCT 数据结构并返回其内存地址,用作 mkWM_COPYDATA 消息中的 lParam 参数。

参数:
dwData:要传递给接收应用程序的数据类型。 通常使用 register_window_message() 函数创建。
lpData:要传递给接收应用程序的数据。 通常使用 global_alloc_string() 函数创建。
cbData:lpData 成员指向的数据的大小(以字节为单位)。

返回值:
返回 COPYDATASTRUCT 数据结构的内存地址。

注意:不再使用的内存,可以使用 free() 函数释放其占用的内存空间。

 

>> 相关演示代码文件函数

函数 描述
intfile_read(string filePath, string *body [, string charset]) 读取一个文件内容。
filePath:文件的完整路径。
body:存放读取的文件内容。
charset:可选参数,指定文件原编码,如: utf-8
返回值:文件读取成功返回 1,文件读取失败返回 0,body 中存放相关错误信息。
intfile_write(string filePath, string body, string writeMode [, string charset]) 将数据写入到文件。
filePath:文件的完整路径。
body:准备写入的文件内容。
writeMode:写入模式,如需将写入的数据追加到文件尾,请填写 "a", 反之可填写一个空白的字符串 ""
charset:可选参数,指定文件编码,如: utf-8
返回值:文件写入成功返回 1,文件写入失败返回 0,可通过 get_last_error_message() 获取相关错误信息。
intfile_open(string filePath, string mode) 使用指定的模式 mode 打开 filePath 指向的文件。
filePath:文件的路径。
mode:文件访问模式,模式如下:
模式 描述
r 以只读方式打开文件,该文件必须存在。
r+ 以读/写方式打开文件,该文件必须存在。
rb+ 以读/写方式打开一个二进制文件,只允许读/写数据。
rt+ 以读/写方式打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则该文件内容会清空;若文件不存在则创建该文件。
w+ 打开可读/写文件,若文件存在则该文件内容会清空;若文件不存在则创建该文件。
a 以附加的方式打开只写文件。若文件不存在,则会创建该文件;如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF 符保留)。
a+ 以附加方式打开可读/写的文件。若文件不存在,则会创建该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(EOF符不保留)。
wb 以只写方式打开或新建一个二进制文件,只允许写数据。
wb+ 以读/写方式打开或新建一个二进制文件,允许读和写。
wt+ 以读/写方式打开或新建一个文本文件,允许读和写。
at+ 以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+ 以读/写方式打开一个二进制文件,允许读或在文件末追加数据。
r,ccs=utf-8 在打开文件时将编码设置为UTF-8

返回值:成功调用返回一个文件句柄。失败返回 0

intfile_close(string *fileHandle) 关闭文件句柄,刷新与文件句柄相关的所有缓冲区。
fileHandle:文件句柄。
返回值:成功返回 1,失败返回 0
intfile_eof(string *fileHandle) 检测文件句柄 fileHandle 指向的文件流上的文件结束符。
fileHandle:文件句柄。
返回值:如果文件结束,返回 1,否则返回 0
voidfile_rewind(string *fileHandle) 将文件句柄 fileHandle 指向的文件内部的指针重新指向文件流的开头。
intfile_error(string *fileHandle) 在调用与文件读写相关的函数时,如果出现错误,除了函数返回值有所反映外,还可以用 file_error 函数检查。 应该注意,对同一个文件每一次调用读写函数,均产生一个新的 file_error 函数值,因此,应当在调用一个文件读写函数后立即检查 file_error 函数的值,否则信息会丢失。在执行 file_open 函数时,file_error 函数的初始值自动置为0。
fileHandle:文件句柄。
返回值:如果返回值为0,表示未出错。如果返回 1,表示出错。
voidfile_clear_error(string *fileHandle) 将文件错误标志和文件结束标志重置为0。假设在调用一个文件读取函数时出现了错误,file_error 函数值为1。在调用 file_clear_error 后,file_error 的值变为0。
fileHandle:文件句柄。
intfile_get_last_error() 当调用文件读写函数返回值提示发生错误时,可通过 file_get_last_error 返回相关的错误码。
返回值:返回值为0,表示未出错。反之表示出错。
stringfile_get_last_error_message() 当调用文件读写函数返回值提示发生错误时,可通过 file_get_last_error_message 返回相关错误提示信息。
stringfile_get_error_message(int errorID) 返回指定错误码 errorID 相关的描述信息。
errorID:错误码,通过 file_get_last_error 获得。
intfile_read_char(string *fileHandle) 从文件句柄 fileHandle 指向的文件流中读取一个字符,并把它作为函数返回值以整型类型返回,并把位置标识符往前移动。 如果读取失败或者到了文件结束标志返回 -1
fileHandle:文件句柄。
intfile_read_line(string *fileHandle, string *lineText) 从文件句柄 fileHandle 指向的文件流中读取一行字符。文件内部读指针会自动后移到下一行的位置。
fileHandle:文件句柄。
lineText:读取的一行字符。该参数只能是一个 string 变量。
返回值:成功读取一行文本,返回读取到的一行字符数。读取错误或在读字符时遇到 end-of-file,则 eof 指示器被设置,返回 -1

注意:如果文件内部编码是 utf-8,获取文件句柄时,需要加上参数:,ccs=utf-8
int fileHandle = file_open("file_unicode.txt", "r,ccs=utf-8")
intfile_read_data(string *fileHandle, byte buffer[], int count) 从文件句柄 fileHandle 指向的文件流中读取最多 count 个字节并存储到字节数组 buffer 中。流的文件位置指示器前进读取的字节数。
fileHandle:文件句柄。
buffer[]:字节数组,存储从文件流中读取的字节。
count:要读取的字节个数
返回值:返回成功读取的字节个数,若出现错误或到达文件末尾,则返回值可能小于 count。 若 count 为 0,则直接返回 0 且不进行其他动作。file_read_data 不区分文件尾和错误,因此调用者必须用 file_eof 和 file_error 才能判断发生了什么。
intfile_write_char(string *fileHandle, int c) 将字符 c 写到文件句柄 fileHandle 指向的文件的当前写指针的位置。当正确写入一个字符的数据后,文件内部写指针会自动后移n个字节的位置。
fileHandle:文件句柄。
c:准备写入文件的字符。
返回值:在正常调用情况下,函数返回写入文件的字符的ASCII码值,出错时,返回 -1
intfile_write_text(string *fileHandle, string text) 向文件句柄 fileHandle 指向的文件流写入一个字符串。成功写入一个字符串后,文件的位置指针会自动后移。
fileHandle:文件句柄。
text:准备写入的字符串。
返回值:成功写入返回 1,出错返回 0
intfile_write_data(string *fileHandle, byte buffer[], int count) 向文件句柄 fileHandle 指向的文件流中写入字节数组 buffer 中最多 count 个字节的数据。成功写入后,文件的位置指针会自动后移。
fileHandle:文件句柄。
buffer[]:字节数组,准备写入文件的字节数据。
count:要写入文件的字节个数
返回值:成功写入,则返回 count,如果写入失败,则返回值与 count 参数不同。
intfile_flush(string *fileHandle) 强制将缓冲区内的数据写入文件句柄 fileHandle 指向的文件流中 。
fileHandle:文件句柄。
返回值:如果成功, 返回 1。指定的流没有缓冲区或者只读打开时也返回 1。 失败返回 0
intfile_exist(string filePath) 检查文件路径是否存在。
filePath:文件的完整路径。
返回值:文件路径存在返回 1。文件路径不存在返回 0
longfile_len(string filePath) 获取文件大小,单位:字节。
filePath:文件的完整路径。
返回值:文件存在,返回文件的大小。如果文件不存在,返回 -1
intfile_copy(string existingFilePath, string newFilePath, int failIfExists) 将现有文件 existingFilePath 复制到新文件 newFilePath。
existingFilePath:现有文件的路径。
newFilePath:新文件的路径。
failIfExists:指定新文件(newFilePath)已经存在,该操作将如何进行。如果此参数设置为 1 并且新文件已存在,则该函数将失败。如果此参数设置为 0 并且新文件已存在,则该函数将覆盖现有文件并成功。
返回值:如果成功,则返回 1。如果错误,则返回 0
intfile_rename(string oldFilePath, string newFilePath) 把 oldFilePath 所指向的文件名改为 newFilePath。
oldFilePath:要被重命名/移动的文件名称。
newFilePath:文件的新名称。
返回值:如果成功,则返回 1。如果错误,则返回 0
intfile_delete(string filePath) 删除文件。
filePath:要被删除的文件完整路径。
返回值:如果成功,则返回 1。如果错误,则返回 0
   
intfolder_create(string folderPath) 创建新的文件夹。
folderPath:文件夹的完整路径。
返回值:如果成功,则返回 1。如果错误,则返回 0
intfolder_exist(string folderPath) 检查文件夹路径是否存在。
folderPath:文件夹的完整路径。
返回值:文件夹路径存在返回 1。文件路径不存在返回 0
intfolder_rename(string oldFolderPath, string newFolderPath) 把 oldFolderPath 所指向的文件夹名改为 newFolderPath。
oldFolderPath:要被重命名/移动的文件夹名称。
newFolderPath:文件夹的新名称。
返回值:如果成功,则返回 1。如果错误,则返回 0
intfolder_delete(string folderPath) 删除文件夹。
folderPath:要被删除的文件夹完整路径。
返回值:如果成功,则返回 1。如果错误,则返回 0
intfolder_get_subfolder_list(string folderPath, ArrayList<string> list [, int isAllLayers]) 获取当前指定文件夹(folderPath)的子文件夹路径列表。
folderPath:文件夹的完整路径。
list:存储子文件夹路径的动态数组。
isAllLayers:可选参数,是否读取所有层的子文件夹,非零:读取所有层,0:只读取下一层的子文件夹。
返回值:如果成功,则返回 1。如果错误,则返回 0
intfolder_get_file_list(string folderPath, ArrayList<string> list [, string extensionName] [, int isRecursionSubFolder]) 获取当前指定文件夹(folderPath)的文件路径列表。
folderPath:文件夹的完整路径。
list:存储文件路径的动态数组。
extensionName:可选参数,不填则获取所有类型的文件列表,"*.txt" 则获取扩展名为.txt 文件列表。
isRecursionSubFolder:可选参数,是否搜索所有子文件夹里的文件。
返回值:如果成功,则返回 1。如果错误,则返回 0
   
intset_current_directory(string folderPath) 设置当前进程的当前目录。

函数原型(Windows API): SetCurrentDirectory()

folderPath:文件夹路径。

返回值:非零表示成功,零表示失败。
stringget_current_directory() 获取当前进程的当前目录。

函数原型(Windows API): GetCurrentDirectory()
stringget_system_folder_path(int CSIDL_ID)

获取指定的系统文件夹路径。

函数原型(Windows API): SHGetSpecialFolderPath()

CSIDL_ID:标识代号,参数值可查看:系统常量

stringget_mkscript_folder_path() 获取当前 MKScript.exe 脚本解释器所在的文件夹路径。
stringget_script_folder_path() 获取当前脚本文件(.m 文件)所在的文件夹路径。
stringget_short_path(string longPath) 获取指定路径的短路径形式。

函数原型(Windows API): GetShortPathNameW()

longPath:长路径。

返回值:非空白字符串表示成功,空白字符串表示失败。
stringget_long_path(string shortPath) 将指定的路径转换为长路径并返回。

函数原型(Windows API): GetLongPathNameW()

shortPath:短路径。

返回值:非空白字符串表示成功,空白字符串表示失败。
stringget_full_path(string path) 获取指定路径的完整路径。

函数原型(Windows API): GetFullPathNameW()

path:路径。

返回值:非空白字符串表示成功,空白字符串表示失败。

 

类型转换函数

函数 描述
intstoi(string text) 将一个字符串转换成整数并返回,示例:int c = stoi("123")
longstol(string text) 将一个字符串转换成长整数并返回,示例:long = stol("123")
floatstof(string text) 将一个字符串转换成单精度浮点数并返回,示例:float v = stof("1.23")
doublestod(string text) 将一个字符串转换成双精度浮点数并返回,示例:double v = stod("1.23")
   
longitol(int v) 将一个整数转换成长整数并返回,示例:long v = itol(123)
floatitof(int v) 将一个整数转换成单精度浮点数并返回,示例:float v = itof(123)
doubleitod(int v) 将一个整数转换成双精度浮点数并返回,示例:double v = itod(123)
stringitos(int v) 将一个整数转换成字符串并返回,示例:string t = itos(123)
   
intltoi(int v) 将一个长整数转换成整数并返回,示例:int v = ltoi(123)
floatltof(int v) 将一个长整数转换成单精度浮点数并返回,示例:float v = ltof(123)
doubleltod(int v) 将一个长整数转换成双精度浮点数并返回,示例:double v = ltod(123)
stringltos(int v) 将一个长整数转换成字符串并返回,示例:string t = ltos(123)
   
intftoi(float v) 将一个单精度浮点数转换成整数并返回,示例:int c = ftoi(123.45)
longftol(float v) 将一个单精度浮点数转换成长整数并返回,示例:long c = ftol(123.45)
doubleftod(float v) 将一个单精度浮点数转换成双精度浮点数并返回,示例:float c = ftod(123.45)
stringftos(float v, int decimal) 将一个单精度浮点数转换成字符串并返回,decimal 表示浮点数保留的小数位长度。
   
intdtoi(double v) 将一个双精度浮点数转换成整数并返回,示例:int c = dtoi(123.45)
longdtol(double v) 将一个双精度浮点数转换成长整数并返回,示例:long c = dtol(123.45)
floatdtof(double v) 将一个双精度浮点数转换成单精度浮点数并返回,示例:float c = dtof(123.45)
stringdtos(double v, int decimal) 将一个双精度浮点数转换成字符串并返回,decimal 表示浮点数保留的小数位长度。

 

>> 相关演示代码动态数组函数

函数 描述
voidarraylist_reset_capacity_factor(ArrayList<T> list, int capacity, int factor) 重新设置动态数组的容量(capacity)与增长因子(factor)。
动态数组初始化时默认的容量与增长因子都是10,当动态数组需要存放大量的数据时,默认的容量和增长因子就显的有点小,因此可通过该函数将动态数组的容量和增长因子设置为一个较大的值,这样可以提升脚本的性能。
voidarraylist_add(ArrayList<T> list, <T> item) 将指定的元素添加到动态数组的尾部。
voidarraylist_insert(ArrayList<T> list, int index, <T> item) 将指定的元素插入动态数组中的指定位置。
intarraylist_index_of(ArrayList<T> list, <T> item) 返回动态数组中首次出现的指定元素的索引,如果动态数组中找不到该元素,则返回 -1
intarraylist_last_index(ArrayList<T> list, <T> item) 返回动态数组中最后一次出现的指定元素的索引,如找不到该元素,则返回 -1
intarraylist_contains(ArrayList<T> list, <T> item) 如果动态数组中包含指定的元素,则返回 1,反之返回 0
intarraylist_remove(ArrayList<T> list, <T> item) 移除动态数组中首次出现的指定元素(如果存在返回1, 反之返回 0)
<T>arraylist_remove_index(ArrayList<T> list, int index) 移除动态数组中指定位置上的元素,并返回移除的元素。
<T>arraylist_set(ArrayList<T> list, int index, <T> item) 用指定的元素替代动态数组中指定位置上的元素。
<T>arraylist_get(ArrayList<T> list, int index) 返回动态数组中指定位置上的元素。
intarraylist_get_size(ArrayList<T> list) 返回动态数组中的元素数量。
voidarraylist_clear(ArrayList<T> list) 移除动态数组中的所有元素。

 

>> 相关演示代码链表函数

函数 描述
voidlinkedlist_add(LinkedList<T> list, <T> item) 将指定的元素添加到链表的尾部。
voidlinkedlist_add_first(LinkedList<T> list, <T> item) 将指定的元素添加到链表的头部。
voidlinkedlist_insert(LinkedList<T> list, int index, <T> item) 将指定的元素插入链表中的指定位置。
intlinkedlist_index_of(LinkedList<T> list, <T> item) 返回链表中首次出现的指定元素的索引,如果链表中找不到该元素,则返回 -1
intlinkedlist_last_index(LinkedList<T> list, <T> item) 返回链表中最后一次出现的指定元素的索引,如找不到该元素,则返回 -1
intlinkedlist_contains(LinkedList<T> list, <T> item) 如果链表中包含指定的元素,则返回 1,反之返回 0
intlinkedlist_remove(LinkedList<T> list, <T> item) 移除链表中首次出现的指定元素(如果存在返回1, 反之返回 0)
<T>linkedlist_remove_index(LinkedList<T> list, int index) 移除链表中指定位置上的元素,并返回移除的元素。
<T>linkedlist_remove_first(LinkedList<T> list) 移除并返回链表的第一个元素。
<T>linkedlist_remove_last(LinkedList<T> list) 移除并返回列表的最后一个元素。
<T>linkedlist_set(LinkedList<T> list, int index, <T> item) 用指定的元素替代链表中指定位置上的元素。
<T>linkedlist_get(LinkedList<T> list, int index) 返回链表中指定位置上的元素。
<T>linkedlist_get_first(LinkedList<T> list) 返回链表的第一个元素。
<T>linkedlist_get_last(LinkedList<T> list) 返回链表的最后一个元素。
Iterator<T>linkedlist_iterator(LinkedList<T> list) 返回链表中元素的迭代器
Iterator<T>linkedlist_iterator_reverse(LinkedList<T> list) 以逆向顺序返回链表中元素的迭代器,元素将按从最后一个(尾部)到第一个(头部)的顺序返回
intlinkedlist_get_size(LinkedList<T> list) 返回链表中的元素数量。
voidlinkedlist_clear(LinkedList<T> list) 移除链表中的所有元素。

 

>> 相关演示代码哈希表函数

函数 描述
voidhashmap_reset_capacity_factor(HashMap<K,V> map, int capacity, float factor) 重新设置哈希表的容量(capacity)与加载因子(factor)。
哈希表初始化时默认的容量:16,加载因子:0.75,当哈希表需要存放大量的数据时,默认的容量(16)就显的有点小,因此可通过该函数将哈希表的容量设置为一个较大的值,这样可以提升脚本的性能。
Vhashmap_put(HashMap<K,V> map, <K> key, <V> value) 在此映射中关联指定值与指定键。如果该映射以前包含了一个该键的映射关系,则旧值被替换。
Vhashmap_get(HashMap<K,V> map, <K> key) 返回指定键所映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回(V)的类型默认值。
inthashmap_contains_key(HashMap<K,V> map, <K> key) 如果此映射包含对于指定键的映射关系,则返回 1, 反之返回0
inthashmap_contains_value(HashMap<K,V> map, <V> value) 如果此映射将一个或多个键映射到指定值,则返回 1, 反之返回0
Vhashmap_remove(HashMap<K,V> map, <K> key) 从此映射中移除指定键的映射关系(如果存在)。
返回与 key 关联的旧值;如果 key 没有任何映射关系,则返回(V)的类型默认值。
inthashmap_get_size(HashMap<K,V> map) 返回此映射中的键-值映射关系数。
voidhashmap_clear(HashMap<K,V> map) 从此映射中移除所有映射关系。此调用返回后,映射将为空。
Iterator<K>hashmap_keys(HashMap<K,V> map) 返回此映射中所包含的键的 Iterator<K> 迭代器。
Iterator<V>hashmap_values(HashMap<K,V> map) 返回此映射所包含的值的 Iterator<V> 迭代器。

 

迭代器函数

函数 描述
intiterator_has_next(Iterator<T> iterator) 如果仍有元素可以迭代,则返回 1, 反之返回 0
Viterator_next(Iterator<T> iterator) 返回迭代的下一个元素。
#示例:

HashMap<int, string> map

hashmap_put(map, 1, "one")
hashmap_put(map, 2, "two")
hashmap_put(map, 3, "three")

Iterator<int> iKeys = hashmap_keys(map)
loop iterator_has_next(iKeys) == mkTrue
    println("key:" + iterator_next(iKeys))
endloop

println("")

Iterator<string> iValues = hashmap_values(map)
loop iterator_has_next(iValues) == mkTrue
    println("value:" + iterator_next(iValues))
endloop

 

HTTP 请求函数

函数 描述
inthttp_get(string url, string *returnBody [, string fromCharset] [, string cookie] [, string referer]) 发起 http get 请求。
url:请求的网址。(注意:v9.1-仅支持 http, v9.2+ 支持 https)
returnBody:string 变量名, 用于存放http请求返回的内容。
fromCharset:可选项,http 请求返回的内容采用的字符集,例如:"utf-8"
cookie:可选项,设置 http 请求中的 cookie 字段, 支持多个(用 ; 隔开),格式:a=1;b=2;c=3
referer:可选项,设置 http 请求中的 referer 字段。

返回值:1(http 状态码: 200), 0(http 状态码 != 200), -1(网络错误)

inthttp_post(string url, string data, string *returnBody [, string fromCharset] [, string cookie] [, string referer])

发起 http post 请求。
url:请求的网址
data:设置 http 请求中 post 的数据,格式:a=1&b=2&c=3
returnBody:string 变量名, 用于存放http请求返回的内容。
fromCharset:可选项,http 请求返回的内容采用的字符集,例如:"utf-8"
cookie:可选项,设置 http 请求中的 cookie 字段, 支持多个(用 ; 隔开),格式:a=1;b=2;c=3
referer:可选项,设置 http 请求中的 referer 字段。

返回值:1(http 状态码: 200), 0(http 状态码 != 200), -1(网络错误)
stringurl_encode(string text [, string toCharset]) 将字符串以URL编码,用于编码处理。
text:需要进行URL编码的字符串。
toCharset:可选项,将 text 转换成指定字符集后再进行URL编码,例如:"utf-8"

返回值:返回URL编码后的字符串。
提示:可以使用 MSXML2.ServerXMLHTTP 发起 http 或 https 请求,实现更强大的功能。查看相关演示代码

 

本地存储函数

函数 描述
intstorage_set_domain(string domain) 设置本地存储的【域】。
domain:域, 最大长度 100 个字符
返回值:1(成功), 0(失败)
intstorage_set(string key, string value) 用于本地存储数据,结构: key = value,单个 key 最多可存储 8192 个字符。
key:关键词,最大长度 255 个字符
value:值,最大长度 8192 个字符
返回值:1(成功), 0(失败)
stringstorage_get(string key) 读取本地存储的数据。
key:关键词
返回值:读取 key 对应的值,如果 key 不存在,或读取失败返回空白字符串。
intstorage_remove(string key) 删除本地存储中指定的key。
key:关键词
返回值:key存在并成功删除返回 1,反之返回 0
intstorage_clear() 删除当前【域】的本地存储中所有 key。
返回值:返回成功删除的 key 数量。
#示例:

#设置当前的存储【域】
int status = storage_set_domain("my_app_name")

status = storage_set("user", "test")
if status == 1
    storage_set("age", "16")
    println("user:" + storage_get("user"))

    #将string(字符串)转换成int(整数)
    int age = stoi(storage_get("age"))

    if age >= 16
        println("age:" + age)
    endif
endif

 

剪贴板函数

函数 描述
intclipboard_set_text(string text) 把指定文本(text)放入剪贴板中,成功返回 1, 失败返回 0
intclipboard_set_bmp(Bmp bmp) 把指定位图对象(bmp)放入剪贴板中,成功返回 1, 失败返回 0
stringclipboard_get_text() 返回从剪贴板获取的文本内容。
intclipboard_get_bmp(Bmp bmp) 如果剪贴板存在位图对象,就读取并存放到参数:bmp 变量中,并返回 1, 否则返回 0

 

对话框函数

函数 描述
voidalert(string t, [int timeout]) 弹出一个提示对话框。示例: alert("你好,MKScript")
参数:
t:显示的文本内容
timeout:可选参数,超时自动关闭对话框,单位:秒。
intconfirm(string text [, int type]) 弹出一个确认对话框。
text:对话框中显示的一行文本。
type :可选参数,可使用的值如下:
mkOkCancel (1) 显示【确定】,【取消】按钮。
mkYesNo (4) 显示【是】,【否】按钮。
mkYesNoCancel (3) 显示【是】,【否】,【取消】按钮。
返回值有: mkOk (1),mkCancel (2),mkYes (6),mkNo (7)
intprompt(string text, string *value, [int type], [int isPwdStyle]) 弹出一个单行文本输入对话框。
text:对话框中显示的一行文本。
value:当用户点击【确定】按钮时,存储用户输入的内容。注意:该参数必须是一个变量。
type: 可选参数,可使用的值如下:
mkPrompt_String (1) 在对话框中接受输入任意字符。
mkPrompt_Char (2) 在对话框中只接受输入1个字符。
mkPrompt_Int (3) 在对话框中只接受输入整数。
mkPrompt_Numeric (4) 在对话框中只接受输入一个数。
可选参数 isPwdStyle:
如果需要在弹出的输入对话框中输入密码,可将 isPwdStyle 设置为 1,输入的密码不可见。
返回值有: mkOk (1),mkCancel (2)
intinput_box(string title, string text, string *value, [int type], [int isPwdStyle]) 弹出一个单行文本输入对话框。
title:对话框窗口标题栏文本
text:对话框中显示的一行文本。
value:当用户点击【确定】按钮时,存储用户输入的内容。注意:该参数必须是一个变量。
type:可选参数,可使用的值如下:
mkPrompt_String (1) 在对话框中接受输入任意字符。
mkPrompt_Char (2) 在对话框中只接受输入1个字符。
mkPrompt_Int (3) 在对话框中只接受输入整数。
mkPrompt_Numeric (4) 在对话框中只接受输入一个数。
可选参数 isPwdStyle:
如果需要在弹出的输入对话框中输入密码,可将 isPwdStyle 设置为 1,输入的密码不可见。
返回值有: mkOk (1),mkCancel (2)
intinput_multiline_box(string title, string text, string *value, [int lengthLimit], [int width, int height]) 弹出一个可输入多行文本的对话框。
title:对话框窗口标题栏文本
text:对话框中显示的一行文本。
value:当用户点击【确定】按钮时,存储用户输入的内容。注意:该参数必须是一个变量。
lengthLimit:可选参数,设置输入文本的长度限制。
width: 可选参数,设置对话框窗口的宽度。
height: 可选参数,设置对话框窗口的高度。
返回值有: mkOk (1),mkCancel (2)
intfile_dialog_show_open(string title, string *filePath, [string initDir], [string filter]) 弹出一个 "打开" 文件选择器对话框,只能选中一个文件。
title:设置文件选择器对话框窗口标题栏的文本。
filePath:存储用户选择的文件路径,注意:这个参数必须是一个 string 变量。
initDir:可选参数,设置对话框的初始目录路径。
filter:可选参数,指定文件选择器对话框接受的文件类型过滤器。格式如下:
文本文件 (*.txt)|*.txt
图片文件 (*.jpg;*.png)|*.jpg;*.png
图片文件 (*.jpg;*.png)|*.jpg;*.png|jpg图片 (*.jpg)|*.jpg|png文件 (*.png)|*.png

返回值:
用户选中一个文件并点击【打开】按钮返回 1,用户选择的文件路径存放在 filePath 中。
用户点击【取消】按钮返回 0。
intfile_dialog_show_open_multi_select(string title, ArrayList<string> list, [string initDir], [string filter]) 弹出一个 "打开" 文件选择器对话框,可以选中多个文件。
title:设置文件选择器对话框窗口标题栏的文本。
list:存储用户选择的文件路径列表,注意:这个参数必须是一个 string 变量。
initDir:可选参数,设置对话框的初始目录路径。
filter:可选参数,指定文件选择器对话框接受的文件类型过滤器。格式如下:
文本文件 (*.txt)|*.txt
图片文件 (*.jpg;*.png)|*.jpg;*.png
图片文件 (*.jpg;*.png)|*.jpg;*.png|jpg图片 (*.jpg)|*.jpg|png文件 (*.png)|*.png

返回值:
用户选中了文件并点击【打开】按钮返回 1,用户选择的文件路径列表存放在 list 中。
用户点击【取消】按钮返回 0。
intfile_dialog_show_save(string title, string *filePath, [string initDir], [string filter], [string defaultExt]) 弹出一个 "保存" 文件选择器对话框。
title:设置文件选择器对话框窗口标题栏的文本。
filePath:存储用户输入或选中的文件路径,注意:这个参数必须是一个 string 变量。
initDir:可选参数,设置对话框的初始目录路径。
filter:可选参数,指定文件选择器对话框接受的文件类型过滤器。格式如下:
文本文件 (*.txt)|*.txt
图片文件 (*.jpg;*.png)|*.jpg;*.png
图片文件 (*.jpg;*.png)|*.jpg;*.png|jpg图片 (*.jpg)|*.jpg|png文件 (*.png)|*.png
defaultExt:可选参数,指定文件的默认扩展名,如果参数 filter 为空,并且用户输入的文件名中没有扩展名,就默认添加这个扩展名,注意:不需要输入 '.'

返回值:
用户点击【保存】按钮返回 1,用户输入或选中的文件路径存放在 filePath 中。
用户点击【取消】按钮返回 0。
intfolder_dialog_show(string title, string *folderPath, [int isShowNewFolderButton]) 弹出一个文件夹选择器对话框。
title:设置文件夹选择器对话框窗口标题栏的文本。
folderPath:存储用户选择的文件夹路径,注意:这个参数必须是一个 string 变量。
isShowNewFolderButton:可选参数,设置对话框窗口是否显示【新建文件夹】按钮,1:显示,0:不显示。

返回值:
用户选中一个文件夹并点击【确定】按钮返回 1,用户选择的文件夹路径存放在 folderPath 中。
用户点击【取消】按钮返回 0。

 

DLL动态链接库函数

函数 描述
intdll_load(string dllFilePath) 加载指定的动态链接库文件,返回值:成功则返回库模块的句柄,零表示失败。
intdll_free(int *dllHandle) 释放指定的动态链接库,返回值:非零表示成功,零表示失败。
void *dll_get_function(string funcName [, int *dllHandle]) 获取在动态链接库(DLL)中的输出函数地址,返回值类型:函数指针。
funcName:函数名
dllHandle:可选参数,可选择从指定库模块句柄中获取函数地址。
返回值:
如果函数调用成功,返回值是DLL中的输出函数地址。
如果函数调用失败,返回值是0。得到进一步的错误信息,调用函数get_last_error()。
#演示在 MKScript 中调用 Win32 API 函数

#加载 user32.dll
int dllHandle = dll_load("user32.dll")

#MessageBoxW 函数功能: 显示一个模式对话框,其中包含系统图标、一组按钮和一条简短的应用程序特定消息,例如状态或错误信息。
#消息框返回一个整数值,该值指示用户单击的按钮。
#详细说明: https://learn.microsoft.com/zh-cn/windows/win32/api/winuser/nf-winuser-messageboxw

#定义【函数指针: mb】映射到【MessageBoxW 函数】
int (*mb)(int, string, string, int) = dll_get_function("MessageBoxW")

#消息框中显示的按钮, 指定以下值之一
int MB_OK          = 0x00000000 #消息框包含一个按钮: 确定。 这是默认值。
int MB_OKCANCEL    = 0x00000001 #消息框包含两个推送按钮: “确定 ”和 “取消”。
int MB_YESNOCANCEL = 0x00000003 #消息框包含三个按钮: 是、 否和 取消。
int MB_YESNO       = 0x00000004 #消息框包含两个按下按钮: 是 和 否。
int MB_RETRYCANCEL = 0x00000005 #消息框包含两个按下按钮: 重试 和 取消。

#消息框中显示图标, 指定以下值之一
int MB_ICONERROR       = 0x00000010 #消息框中会显示一个停止符号图标。
int MB_ICONQUESTION    = 0x00000020 #消息框中会显示一个问号图标。
int MB_ICONWARNING     = 0x00000030 #消息框中会显示一个感叹号图标
int MB_ICONINFORMATION = 0x00000040 #图标由圆圈中的小写字母 i 组成,显示在消息框中。

#调用 mb() 相当于调用了 Win32 API 函数:MessageBoxW()
int status = mb(window_get_mkscript_handle(), "看到一个弹出对话框了吗?", "这是标题", MB_YESNO | MB_ICONQUESTION)

#返回值	        说明
#----------------------------------
# 1             已选择【确定】按钮。
# 2             已选择【取消】按钮。
# 4             已选择【重试】按钮。
# 6             已选择【是】按钮。
# 7             已选择【否】按钮。
println("status:" + status)

 

>> 相关演示代码:Excel电子表格|Access数据库|Http请求COM组件对象函数

函数 描述
intcom_initialize([int mode]) 初始化COM库并设置并发模式 。

函数原型(Windows API): CoInitializeEx()

mode:可选参数,设置线程的并发模式。
mode 参数值可查看:系统常量
如果不指定参数 mode,将调用系统函数:CoInitialize()

返回值:
0:COM库初始化成功。
1:COM库已经被初始化。
2147549446:COM库已经被初始化且传入参数设置的并发模式和本次不同。
intcom_object_new(string objectName [,string iid]) 创建COM对象并返回对象句柄。
iid:可选参数,可指定COM对象的接口。
返回值:成功则返回COM对象句柄,零表示失败。
intcom_object_new_from_dll(int *dllHandle, string CLSID [, string iid]) 通过已加载的DLL动态链接库句柄和指定的CLSID来创建COM对象并返回对象句柄。
iid:可选参数,可指定COM对象的接口。
返回值:成功则返回COM对象句柄,零表示失败。
void * com_object_get_function(int *comObjectHandle, string funcName) 获取在COM组件对象中的函数(或带参数的属性)地址,返回值类型:函数指针。
comObjectHandle:COM对象句柄。
funcName:函数名
如果函数调用成功,返回值是COM对象中的函数(或带参数的属性)地址。
如果函数名(或带参数的属性名)不存在,程序会崩溃。
voidcom_object_set_byte(int *comObjectHandle, string propertyName, byte v) 设置COM对象的属性值,属性值的类型:byte
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_char(int *comObjectHandle, string propertyName, char v) 设置COM对象的属性值,属性值的类型:char
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_short(int *comObjectHandle, string propertyName, short v) 设置COM对象的属性值,属性值的类型: short
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_boolean(int *comObjectHandle, string propertyName, int v) 设置COM对象的属性值,属性值的类型: 布尔型
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_int(int *comObjectHandle, string propertyName, int v) 设置COM对象的属性值,属性值的类型: int
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_long(int *comObjectHandle, string propertyName, long v) 设置COM对象的属性值,属性值的类型:long (8字节)
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_float(int *comObjectHandle, string propertyName, float v) 设置COM对象的属性值,属性值的类型:float
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_double(int *comObjectHandle, string propertyName, double v) 设置COM对象的属性值,属性值的类型:double
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_string(int *comObjectHandle, string propertyName, string v) 设置COM对象的属性值,属性值的类型:string
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_date(int *comObjectHandle, string propertyName, double v) 设置COM对象的属性值,属性值的类型:date
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
voidcom_object_set_object(int *comObjectHandle, string propertyName, int *v) 设置COM对象的属性值,属性值的类型:对象
comObjectHandle:COM对象句柄。
propertyName:属性名
v:属性值
   
voidcom_object_set_safe_array_byte(int *comObjectHandle, string propertyName, int *safeArrayHandle) 设置COM对象的属性值,属性值的类型:安全数组(byte)
comObjectHandle:COM对象句柄。
propertyName:属性名
safeArrayHandle:属性值 ,可通过 com_safe_array_new_byte() 创建
voidcom_object_set_safe_array_char(int *comObjectHandle, string propertyName, int *safeArrayHandle) 设置COM对象的属性值,属性值的类型:安全数组(char)
comObjectHandle:COM对象句柄。
propertyName:属性名
safeArrayHandle:属性值 ,可通过 com_safe_array_new_char() 创建
voidcom_object_set_safe_array_short(int *comObjectHandle, string propertyName, int *safeArrayHandle) 设置COM对象的属性值,属性值的类型:安全数组(short)
comObjectHandle:COM对象句柄。
propertyName:属性名
safeArrayHandle:属性值 ,可通过 com_safe_array_new_short() 创建
voidcom_object_set_safe_array_int(int *comObjectHandle, string propertyName, int *safeArrayHandle) 设置COM对象的属性值,属性值的类型:安全数组(int)
comObjectHandle:COM对象句柄。
propertyName:属性名
safeArrayHandle:属性值 ,可通过 com_safe_array_new_int() 创建
voidcom_object_set_safe_array_long(int *comObjectHandle, string propertyName, int *safeArrayHandle) 设置COM对象的属性值,属性值的类型:安全数组(long)
comObjectHandle:COM对象句柄。
propertyName:属性名
safeArrayHandle:属性值 ,可通过 com_safe_array_new_long() 创建
voidcom_object_set_safe_array_float(int *comObjectHandle, string propertyName, int *safeArrayHandle) 设置COM对象的属性值,属性值的类型:安全数组(float)
comObjectHandle:COM对象句柄。
propertyName:属性名
safeArrayHandle:属性值 ,可通过 com_safe_array_new_float() 创建
voidcom_object_set_safe_array_double(int *comObjectHandle, string propertyName, int *safeArrayHandle) 设置COM对象的属性值,属性值的类型:安全数组(double)
comObjectHandle:COM对象句柄。
propertyName:属性名
safeArrayHandle:属性值 ,可通过 com_safe_array_new_double() 创建
voidcom_object_set_safe_array_string(int *comObjectHandle, string propertyName, int *safeArrayHandle) 设置COM对象的属性值,属性值的类型:安全数组(BSTR)
comObjectHandle:COM对象句柄。
propertyName:属性名
safeArrayHandle:属性值 ,可通过 com_safe_array_new_string() 创建
   
bytecom_object_get_byte(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:byte
comObjectHandle:COM对象句柄。
propertyName:属性名
charcom_object_get_char(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:char
comObjectHandle:COM对象句柄。
propertyName:属性名
shortcom_object_get_short(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:short
comObjectHandle:COM对象句柄。
propertyName:属性名
intcom_object_get_boolean(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:布尔型
comObjectHandle:COM对象句柄。
propertyName:属性名
intcom_object_get_int(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:int
comObjectHandle:COM对象句柄。
propertyName:属性名
longcom_object_get_long(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:long
comObjectHandle:COM对象句柄。
propertyName:属性名
floatcom_object_get_float(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:float
comObjectHandle:COM对象句柄。
propertyName:属性名
doublecom_object_get_double(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:double
comObjectHandle:COM对象句柄。
propertyName:属性名
stringcom_object_get_string(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:string
comObjectHandle:COM对象句柄。
propertyName:属性名
doublecom_object_get_date(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:double
comObjectHandle:COM对象句柄。
propertyName:属性名
intcom_object_get_object(int *comObjectHandle, string propertyName) 获取COM对象的属性值,返回值类型:COM 对象句柄
comObjectHandle:COM对象句柄。
propertyName:属性名
   
intcom_object_get_type(int *comObjectHandle, string propertyName)

获取COM对象的属性值的类型,返回值可以是以下常量值:

常量名 类型
mkVT_Empty int 0
mkVT_Null int 1
mkVT_Short int 2
mkVT_Int int 3
mkVT_Float int 4
mkVT_Double int 5
mkVT_Currency int 6
mkVT_Date int 7
mkVT_String int 8
mkVT_Object int 9
mkVT_Error int 10
mkVT_Boolean int 11
mkVT_Variant int 12
mkVT_Unknown int 13
mkVT_Decimal int 14
mkVT_Char int 16
mkVT_Byte int 17
mkVT_Long int 20
mkVT_Array int 8192

comObjectHandle:COM对象句柄。
propertyName:属性名

stringcom_object_get_type_name(int *comObjectHandle, string propertyName) 获取COM对象的属性值类型的名称。
comObjectHandle:COM对象句柄。
propertyName:属性名
   
intcom_object_get_array_length(int *comObjectHandle, string propertyName) 获取COM对象的属性值 -> 安全数组的长度
comObjectHandle:COM对象句柄。
propertyName:属性名
intcom_object_get_array_byte(int *comObjectHandle, string propertyName, byte array[], int count) 获取COM对象的属性值,属性值类型:安全数组(byte)
comObjectHandle:COM对象句柄。
propertyName:属性名
array:byte 静态数组
count:byte 静态数组的长度

返回值:
成功读取,返回值为实际读取到的数组长度。
读取错误,返回 -1 表示安全数组类型错误 。
intcom_object_get_array_char(int *comObjectHandle, string propertyName, char array[], int count) 获取COM对象的属性值,属性值类型:安全数组(char)
comObjectHandle:COM对象句柄。
propertyName:属性名
array:char 静态数组
count:char 静态数组的长度

返回值:
成功读取,返回值为实际读取到的数组长度。
读取错误,返回 -1 表示安全数组类型错误 。
intcom_object_get_array_short(int *comObjectHandle, string propertyName, short array[], int count) 获取COM对象的属性值,属性值类型:安全数组(short)
comObjectHandle:COM对象句柄。
propertyName:属性名
array:short 静态数组
count:short 静态数组的长度

返回值:
成功读取,返回值为实际读取到的数组长度。
读取错误,返回 -1 表示安全数组类型错误 。
intcom_object_get_array_int(int *comObjectHandle, string propertyName, int array[], int count) 获取COM对象的属性值,属性值类型:安全数组(int)
comObjectHandle:COM对象句柄。
propertyName:属性名
array:int 静态数组
count:int 静态数组的长度

返回值:
成功读取,返回值为实际读取到的数组长度。
读取错误,返回 -1 表示安全数组类型错误 。
intcom_object_get_array_long(int *comObjectHandle, string propertyName, long array[], int count) 获取COM对象的属性值,属性值类型:安全数组(long)
comObjectHandle:COM对象句柄。
propertyName:属性名
array:long 静态数组
count:long 静态数组的长度

返回值:
成功读取,返回值为实际读取到的数组长度。
读取错误,返回 -1 表示安全数组类型错误 。
intcom_object_get_array_float(int *comObjectHandle, string propertyName, float array[], int count) 获取COM对象的属性值,属性值类型:安全数组(float)
comObjectHandle:COM对象句柄。
propertyName:属性名
array:float 静态数组
count:float 静态数组的长度

返回值:
成功读取,返回值为实际读取到的数组长度。
读取错误,返回 -1 表示安全数组类型错误 。
intcom_object_get_array_double(int *comObjectHandle, string propertyName, double array[], int count) 获取COM对象的属性值,属性值类型:安全数组(double)
comObjectHandle:COM对象句柄。
propertyName:属性名
array:double 静态数组
count:double 静态数组的长度

返回值:
成功读取,返回值为实际读取到的数组长度。
读取错误,返回 -1 表示安全数组类型错误 。
intcom_object_get_array_string(int *comObjectHandle, string propertyName, string array[], int count) 获取COM对象的属性值,属性值类型:安全数组(BSTR)
comObjectHandle:COM对象句柄。
propertyName:属性名
array:string 静态数组
count:string 静态数组的长度

返回值:
成功读取,返回值为实际读取到的数组长度。
读取错误,返回 -1 表示安全数组类型错误 。
 
intcom_safe_array_new_byte(byte array[], int count) 由 byte 静态数组创建 COM 安全数组,并返回安全数组句柄。
array:byte 静态数组
count:byte 静态数组的长度
intcom_safe_array_new_char(char array[], int count) 由 char 静态数组创建 COM 安全数组,并返回安全数组句柄。
array:char 静态数组
count:char 静态数组的长度
intcom_safe_array_new_short(short array[], int count) 由 short 静态数组创建 COM 安全数组,并返回安全数组句柄。
array:short 静态数组
count:short 静态数组的长度
intcom_safe_array_new_int(int array[], int count) 由 int 静态数组创建 COM 安全数组,并返回安全数组句柄。
array:int 静态数组
count:int 静态数组的长度
intcom_safe_array_new_long(long array[], int count) 由 long 静态数组创建 COM 安全数组,并返回安全数组句柄。
array:long 静态数组
count:long 静态数组的长度
intcom_safe_array_new_float(float array[], int count) 由 float 静态数组创建 COM 安全数组,并返回安全数组句柄。
array:float 静态数组
count:float 静态数组的长度
intcom_safe_array_new_double(double array[], int count) 由 double 静态数组创建 COM 安全数组,并返回安全数组句柄。
array:double 静态数组
count:double 静态数组的长度
intcom_safe_array_new_string(string array[], int count) 由 string 静态数组创建 COM 安全数组,并返回安全数组句柄。
array:string 静态数组
count:string 静态数组的长度
intcom_safe_array_destroy(int *safeArrayHandle) 销毁由 com_safe_array_new_xxx() 创建的 COM 安全数组。
safeArrayHandle:COM 安全数组句柄
   
voidcom_object_free(int *comObjectHandle) 释放COM对象。
comObjectHandle:COM对象句柄。
voidcom_uninitialize() 关闭当前的COM库,卸载加载的所有dll,释放相关资源。

函数原型(Windows API): CoUninitialize()
#演示【大漠插件】在 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_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)

#查找窗口
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

 

>> 相关演示代码Excel 电子表格(Excel.Application)函数

函数 描述
stringexcel_get_version(int *excelAppHandle) 获取当前Excel应用程序的版本号。
excelAppHandle:COM对象(Excel.Application)句柄。
voidexcel_display_alert(int *excelAppHandle, int status) 打开或关闭Excel相关的提示和警告消息。
excelAppHandle:COM对象(Excel.Application)句柄。
status:打开(status:1)或关闭(status: 0)
voidexcel_show_window(int *excelAppHandle) 显示Excel的窗口界面
excelAppHandle:COM对象(Excel.Application)句柄。
voidexcel_hide_window(int *excelAppHandle) 隐藏Excel的窗口界面
excelAppHandle:COM对象(Excel.Application)句柄。
intexcel_get_workbooks(int *excelAppHandle) 获了Excel应用程序的 Workbooks 对象句柄。
excelAppHandle:COM对象(Excel.Application)句柄。
intexcel_get_active_workbook(int *excelAppHandle) 获了Excel应用程序的当前活动 Workbook 对象句柄。
excelAppHandle:COM对象(Excel.Application)句柄。
intexcel_get_active_worksheet(int *excelAppHandle) 获了Excel应用程序的当前活动 Worksheet 对象句柄。
excelAppHandle:COM对象(Excel.Application)句柄。
voidexcel_quit(int *excelAppHandle) 退出Excel应用程序。
excelAppHandle:COM对象(Excel.Application)句柄。
   
intworkbooks_get_count(int *workbooksHandle) 获了指定工作簿集合对象(Workbooks)的工作簿数量。
workbooksHandle:工作簿集合对象(Workbooks)句柄。
intworkbooks_get_index(int *workbooksHandle, int index) 获了指定工作簿集合对象(Workbooks)中指定索引对应的工作簿对象(Workbook)句柄
workbooksHandle:工作簿集合对象(Workbooks)句柄。
index:索引
intworkbooks_add(int *workbooksHandle) 为工作簿集合对象(Workbooks)中添加一个新的工作簿对象(Workbook),并返回这个新的工作簿对象(Workbook)句柄。
workbooksHandle:工作簿集合对象(Workbooks)句柄。
intworkbooks_open(int *workbooksHandle, string filePath) 打开一个文件并返回这个打开的工作簿对象(Workbook)句柄。
如果文件打开失败,返回 0
workbooksHandle:工作簿集合对象(Workbooks)句柄。
filePath:文件路径
voidworkbooks_close(int *workbooksHandle) 关闭工作簿集合对象(Workbooks)。
workbooksHandle:工作簿集合对象(Workbooks)句柄。
   
intworkbook_get_worksheets(int *workbookHandle) 获取指定工作簿对象(Workbook)的工作表集合对象(Worksheets)句柄。
workbookHandle:工作簿对象(Workbook)句柄。
intworkbook_save_as(int *workbookHandle, string filePath [int fileFormat])

保存指定工作簿对象(Workbook)到一个文件。
workbookHandle:工作簿对象(Workbook)句柄。
filePath:文件路径
fileFormat:可选参数,采用指定格式保存文件。可选值请参考这里

返回值:1(成功), 0(失败)

intworkbook_save_copy_as(int *workbookHandle, string filePath) 将工作簿副本保存到文件中,但不修改内存中打开的工作簿。
workbookHandle:工作簿对象(Workbook)句柄。
filePath:文件路径
返回值:1(成功), 0(失败)
voidworkbook_save(int *workbookHandle) 保存指定工作簿对象(Workbook)。
workbookHandle:工作簿对象(Workbook)句柄。
voidworkbook_close(int *workbookHandle) 关闭指定工作簿对象(Workbook)。
workbookHandle:工作簿对象(Workbook)句柄。
   
intworksheets_get_count(int *worksheetsHandle) 获取指定工作表集合对象(Worksheets)的工作表数量。
worksheetsHandle:工作表集合对象(Worksheets)句柄。
intworksheets_add(int *worksheetsHandle) 为指定工作表集合对象(Worksheets)添加一个新的工作表(Worksheet),并返回这个新的工作表(Worksheet)句柄。
worksheetsHandle:工作表集合对象(Worksheets)句柄。
intworksheets_get_index(int *worksheetsHandle, int index) 获取指定工作表集合对象(Worksheets)的指定索引对应的工作表对象(Worksheet)句柄。
worksheetsHandle:工作表集合对象(Worksheets)句柄。
index:索引
intworksheets_get_item(int *worksheetsHandle, string name) 获取指定工作表集合对象(Worksheets)的指定名称对应的工作表对象(Worksheet)句柄。
worksheetsHandle:工作表集合对象(Worksheets)句柄。
name:工作表对象(Worksheet)的名称
voidworksheets_select_index(int *worksheetsHandle, int index) 选择指定工作表集合对象(Worksheets)的指定索引对应的工作表。
worksheetsHandle:工作表集合对象(Worksheets)句柄。
index:索引
voidworksheets_select_item(int *worksheetsHandle, string name) 选择指定工作表集合对象(Worksheets)的指定工作表对象(Worksheet)名称对应的工作表。
worksheetsHandle:工作表集合对象(Worksheets)句柄。
name:工作表对象(Worksheet)的名称
   
intworksheet_save_as(int *worksheetHandle, string filePath [int fileFormat])

将对工作表对象(Worksheet)的更改保存到另一不同文件中。
worksheetHandle:工作表对象(Worksheet)句柄。
filePath:文件路径
fileFormat:可选参数,采用指定格式保存文件。可选值请参考这里

返回值:1(成功), 0(失败)

voidworksheet_copy(int *worksheetHandle) Excel 创建包含复制的 Worksheet 对象的新工作簿。
worksheetHandle:工作表对象(Worksheet)句柄。
stringworksheet_get_name(int *worksheetHandle) 获取指定工作表对象(Worksheet)的名称。
worksheetHandle:工作表对象(Worksheet)句柄。
voidworksheet_set_name(int *worksheetHandle, string name) 设置指定工作表对象(Worksheet)的名称。
worksheetHandle:工作表对象(Worksheet)句柄。
name:新的工作表名称
voidworksheet_select(int *worksheetHandle) 选择指定工作表对象(Worksheet)。
worksheetHandle:工作表对象(Worksheet)句柄。
voidworksheet_delete(int *worksheetHandle) 删除指定工作表对象(Worksheet)。
worksheetHandle:工作表对象(Worksheet)句柄。
   
intworksheet_get_range_value_type(int *worksheetHandle, string name) 获取指定单元格(例如:"A1" 或 "A1:D6")值的类型 ,返回值可以是以下常量值:
常量名 类型
mkVT_Empty int 0
mkVT_Null int 1
mkVT_Short int 2
mkVT_Int int 3
mkVT_Float int 4
mkVT_Double int 5
mkVT_Currency int 6
mkVT_Date int 7
mkVT_String int 8
mkVT_Object int 9
mkVT_Error int 10
mkVT_Boolean int 11
mkVT_Variant int 12
mkVT_Unknown int 13
mkVT_Decimal int 14
mkVT_Char int 16
mkVT_Byte int 17
mkVT_Long int 20

worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
stringworksheet_get_range_value_type_name(int *comObjectHandle, string name) 获取指定单元格值的类型名称。
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
intworksheet_get_range_value_boolean(int *comObjectHandle, string name) 获取指定单元格的值,单元格值的类型:mkVT_Boolean(11)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
intworksheet_get_range_value_int(int *comObjectHandle, string name) 获取指定单元格的值,单元格值的类型:mkVT_Int(3)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
longworksheet_get_range_value_long(int *comObjectHandle, string name) 获取指定单元格的值,单元格值的类型:mkVT_Long(20)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
doubleworksheet_get_range_value_double(int *comObjectHandle, string name) 获取指定单元格的值,单元格值的类型:mkVT_Double(5)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
doubleworksheet_get_range_value_currency(int *comObjectHandle, string name) 获取指定单元格的值,单元格值的类型:mkVT_Currency(6)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
doubleworksheet_get_range_value_date(int *comObjectHandle, string name) 获取指定单元格的值,单元格值的类型:mkVT_Date(7)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
stringworksheet_get_range_value_string(int *comObjectHandle, string name) 获取指定单元格的值,单元格值的类型:mkVT_String(8)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
   
doubleworksheet_get_range_row_height(int *comObjectHandle, string name) 返回指定范围内第一行的高度,以points为单位。
当范围包含不同高度的行时,可能返回第一行的高度,也可能返回0。
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
doubleworksheet_get_range_column_width(int *comObjectHandle, string name) 返回指定范围内列的宽度,以points为单位。
如果范围中的所有列都具有相同的宽度,则返回宽度。如果范围中的列具有不同的宽度,可能返回第一列的宽度,也可能返回0。
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
   
intworksheet_get_cell_value_type(int *worksheetHandle, int row, int col) 获取指定单元格值的类型 ,返回值可以是以下常量值:
常量名 类型
mkVT_Empty int 0
mkVT_Null int 1
mkVT_Short int 2
mkVT_Int int 3
mkVT_Float int 4
mkVT_Double int 5
mkVT_Currency int 6
mkVT_Date int 7
mkVT_String int 8
mkVT_Object int 9
mkVT_Error int 10
mkVT_Boolean int 11
mkVT_Variant int 12
mkVT_Unknown int 13
mkVT_Decimal int 14
mkVT_Char int 16
mkVT_Byte int 17
mkVT_Long int 20

worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
stringworksheet_get_cell_value_type_name(int *worksheetHandle, int row, int col) 获取指定单元格值的类型名称。
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
intworksheet_get_cell_value_boolean(int *worksheetHandle, int row, int col) 获取指定单元格的值,单元格值的类型:mkVT_Boolean(11)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
intworksheet_get_cell_value_int(int *worksheetHandle, int row, int col) 获取指定单元格的值,单元格值的类型:mkVT_Int(3)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
longworksheet_get_cell_value_long(int *worksheetHandle, int row, int col) 获取指定单元格的值,单元格值的类型:mkVT_Long(20)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
doubleworksheet_get_cell_value_double(int *worksheetHandle, int row, int col) 获取指定单元格的值,单元格值的类型:mkVT_Double(5)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
doubleworksheet_get_cell_value_currency(int *worksheetHandle, int row, int col) 获取指定单元格的值,单元格值的类型:mkVT_Currency(6)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
doubleworksheet_get_cell_value_date(int *worksheetHandle, int row, int col) 获取指定单元格的值,单元格值的类型:mkVT_Date(7)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
stringworksheet_get_cell_value_string(int *worksheetHandle, int row, int col) 获取指定单元格的值,单元格值的类型:mkVT_String(8)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
   
doubleworksheet_get_row_height(int *worksheetHandle, int row) 返回指定行的高度,以points为单位。
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
doubleworksheet_get_column_width(int *worksheetHandle, int col) 返回指定列的宽度,以points为单位。
worksheetHandle:工作表对象(Worksheet)句柄。
col:单元格的列
   
voidworksheet_set_range_value_boolean(int *worksheetHandle, string name, int v) 设置指定单元格("A1" 或 "A1:D3")的值,单元格值的类型:mkVT_Boolean(11)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:单元格的值
voidworksheet_set_range_value_int(int *worksheetHandle, string name, int v) 设置指定单元格的值,单元格值的类型:mkVT_Int(3)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:单元格的值
voidworksheet_set_range_value_long(int *worksheetHandle, string name, long v) 设置指定单元格的值,单元格值的类型:mkVT_Long(20)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:单元格的值
voidworksheet_set_range_value_double(int *worksheetHandle, string name, double v) 设置指定单元格的值,单元格值的类型:mkVT_Double(5)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:单元格的值
voidworksheet_set_range_value_currency(int *worksheetHandle, string name, double v) 设置指定单元格的值,单元格值的类型:mkVT_Currency(6)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:单元格的值
voidworksheet_set_range_value_date(int *worksheetHandle, string name, double v) 设置指定单元格的值,单元格值的类型:mkVT_Date(7)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:单元格的值
voidworksheet_set_range_value_string(int *worksheetHandle, string name, string v) 设置指定单元格的值,单元格值的类型:mkVT_String(8)
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:单元格的值
   
voidworksheet_set_range_color(int *worksheetHandle, string name, int color) 设置指定单元格的的文字颜色
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
color:RGB颜色,例如红色: rgb(255, 0, 0)
voidworksheet_set_range_color_index(int *worksheetHandle, string name, int index) 设置指定单元格的的文字颜色索引
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
index:颜色索引值,值的范围:0 - 56
voidworksheet_set_range_font_style(int *worksheetHandle, string name, string style) 设置指定单元格的的文字字体样式
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
style:字体样式有 Regular, Italic, Bold, Bold Italic
voidworksheet_set_range_font_name(int *worksheetHandle, string name, string fontName) 设置指定单元格的的文字字体名称
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
fontName:字体名称,例如 "黑体"
voidworksheet_set_range_font_size(int *worksheetHandle, string name, int size) 设置指定单元格的的文字字体字号大小
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
size:字体字号大小
voidworksheet_set_range_row_height(int *comObjectHandle, string name, double v) 设置指定范围内每一行的高度,以points为单位。
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:行高,以points为单位。
voidworksheet_set_range_column_width(int *comObjectHandle, string name, double v) 设置指定范围内每一列的宽度,以points为单位。
worksheetHandle:工作表对象(Worksheet)句柄。
name:单元格的名称
v:列宽,以points为单位。
   
voidworksheet_set_cell_value_boolean(int *worksheetHandle, int row, int col, int v) 设置指定单元格的值,单元格值的类型:mkVT_Boolean(11)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
v:单元格的值
voidworksheet_set_cell_value_int(int *worksheetHandle, int row, int col, int v) 设置指定单元格的值,单元格值的类型:mkVT_Int(3)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
v:单元格的值
voidworksheet_set_cell_value_long(int *worksheetHandle, int row, int col, long v) 设置指定单元格的值,单元格值的类型:mkVT_Long(20)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
v:单元格的值
voidworksheet_set_cell_value_double(int *worksheetHandle, int row, int col, double v) 设置指定单元格的值,单元格值的类型:mkVT_Double(5)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
v:单元格的值
voidworksheet_set_cell_value_currency(int *worksheetHandle, int row, int col, double v) 设置指定单元格的值,单元格值的类型:mkVT_Currency(6)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
v:单元格的值
voidworksheet_set_cell_value_date(int *worksheetHandle, int row, int col, double v) 设置指定单元格的值,单元格值的类型:mkVT_Date(7)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
v:单元格的值
voidworksheet_set_cell_value_string(int *worksheetHandle, int row, int col, string v) 设置指定单元格的值,单元格值的类型:mkVT_String(8)
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
v:单元格的值
   
voidworksheet_set_cell_color(int *worksheetHandle, int row, int col, int color) 设置指定单元格的的文字颜色
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
color:RGB颜色,例如红色: rgb(255, 0, 0)
voidworksheet_set_cell_color_index(int *worksheetHandle, int row, int col, int index) 设置指定单元格的的文字颜色索引
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
index:颜色索引值,值的范围:0 - 56
voidworksheet_set_cell_font_style(int *worksheetHandle, int row, int col, string style) 设置指定单元格的的文字字体样式
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
style:字体样式有 Regular, Italic, Bold, Bold Italic
voidworksheet_set_cell_font_name(int *worksheetHandle, int row, int col, string fontName) 设置指定单元格的的文字字体名称
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
fontName:字体名称,例如 "黑体"
voidworksheet_set_cell_font_size(int *worksheetHandle, int row, int col, int size) 设置指定单元格的的文字字体字号大小
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
col:单元格的列
size:字体字号大小
   
voidworksheet_set_row_height(int *worksheetHandle, int row, double v) 设置指定行的高度,以points为单位。
worksheetHandle:工作表对象(Worksheet)句柄。
row:单元格的行
v:行高,以points为单位。
voidworksheet_set_column_width(int *worksheetHandle, int col, double v) 设置指定列的宽度,以points为单位。
worksheetHandle:工作表对象(Worksheet)句柄。
col:单元格的列
v:列宽,以points为单位。

 

>> 相关演示代码数据库函数

函数 描述
voidconnection_open(int *connectionHandle, string connectionText) 打开数据库
connectionHandle:数据库的连接(Connection)句柄。
connectionText:连接数据库的字符串,指定将要打开数据库的方式和数据库的位置等信息。
intconnection_execute(int *connectionHandle, string sql) 执行数据库的SQL语句。如果sql是个查询语句(select),返回数据库表的记录集(Recordset)句柄。
connectionHandle:数据库的连接(Connection)句柄。
sql:sql语句。
voidconnection_close(int *connectionHandle) 关闭数据库的连接
connectionHandle:数据库表的连接(Connection)句柄。
   
shortrecordset_get_short(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值,字段类型:short
recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
intrecordset_get_int(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值,字段类型:int
recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
longrecordset_get_long(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值,字段类型:long
recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
floatrecordset_get_float(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值,字段类型:float
recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
doublerecordset_get_double(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值,字段类型:double
recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
stringrecordset_get_string(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值,字段类型:string
recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
doublerecordset_get_date(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值,字段类型:date
recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
   
intrecordset_get_type(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值的字段类型。 返回值可以是以下常量值:
常量名 类型
mkVT_Empty int 0
mkVT_Null int 1
mkVT_Short int 2
mkVT_Int int 3
mkVT_Float int 4
mkVT_Double int 5
mkVT_Currency int 6
mkVT_Date int 7
mkVT_String int 8
mkVT_Error int 10
mkVT_Boolean int 11
mkVT_Char int 16
mkVT_Byte int 17
mkVT_Long int 20

recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
stringrecordset_get_type_name(int *recordsetHandle, string fieldName) 获取数据库表的记录集(Recordset)的字段值的字段类型名称。
recordsetHandle:数据库表的记录集(Recordset)句柄。
fieldName:字段名
   
intrecordset_bof(int *recordsetHandle) 判断当前指针位置是否位于 Recordset 对象的第一个记录之前,是就返回 1,否就返回 0
recordsetHandle:数据库表的记录集(Recordset)句柄。
intrecordset_eof(int *recordsetHandle) 判断当前指针位置是否位于 Recordset 对象的最后一个记录之后,是就返回 1,否就返回 0
recordsetHandle:数据库表的记录集(Recordset)句柄。
intrecordset_get_count(int *recordsetHandle) 返回 Recordset 对象的记录数。
recordsetHandle:数据库表的记录集(Recordset)句柄。
voidrecordset_move_next(int *recordsetHandle) 移动至 Recordset 对象中下一条记录,然后将该记录作为当前记录。
recordsetHandle:数据库表的记录集(Recordset)句柄。
voidrecordset_close(int *recordsetHandle) 关闭 Recordset 对象。
recordsetHandle:数据库表的记录集(Recordset)句柄。

 

Json函数

函数 描述
intjson_parse(string text) 解析json字符串,返回json对象的句柄。

参数:
text:json字符串

返回值: > 0(解析成功), 0(解析失败:json 字符串不符合要求)
stringjson_print(int jsonHandle [, int isFormat]) 返回一个json对象的字符串值。

参数:
jsonHandle:json对象的句柄
isFormat:可选参数,是否对返回的字符串进行格式。1(格式化), 0(紧凑型)
intjson_has_item(int jsonHandle, string subName) 判断一个json对象是否含有名称为 subName 的子对象。

参数:
jsonHandle:json对象的句柄
subName:子对象名称。注意:多级子对象可以用格式:a.b.c.d 来描述。 以下类同。

返回值: 1 (存在), 0(不存在)
intjson_get_item(int jsonHandle, string subName) 获取一个json对象的名称为 subName 的子对象句柄。

参数:
jsonHandle:json对象的句柄
subName:子对象名称

返回值: > 0(名称为 subName 的子对象句柄), 0(不存在名称为 subName 的子对象)
intjson_get_item_type(int jsonHandle, string subName) 获取一个json对象的名称为 subName 的子对象数据的类型。

参数:
jsonHandle:json对象的句柄
subName:子对象名称

返回值:
常量名 含义
mkJSON_False 1 false
mkJSON_True 2 true
mkJSON_NULL 4 null
mkJSON_Number 8 数值
mkJSON_String 16 字符串
mkJSON_Array 32 数组
intjson_is_false(int jsonHandle [, string subName]) 判断一个json对象或其名称为 subName 的子对象的值是否为 false

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称

返回值: 1 (是), 0(否)
intjson_is_true(int jsonHandle [, string subName]) 判断一个json对象或其名称为 subName 的子对象的值是否为 true

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称

返回值: 1 (是), 0(否)
intjson_is_null(int jsonHandle [, string subName]) 判断一个json对象或其名称为 subName 的子对象的值是否为 null

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称

返回值: 1 (是), 0(否)
intjson_is_number(int jsonHandle [, string subName]) 判断一个json对象或其名称为 subName 的子对象的值是否为一个数

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称

返回值: 1 (是), 0(否)
intjson_is_string(int jsonHandle [, string subName]) 判断一个json对象或其名称为 subName 的子对象的值是否为一个字符串

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称

返回值: 1 (是), 0(否)
intjson_is_array(int jsonHandle [, string subName]) 判断一个json对象或其名称为 subName 的子对象的值是否为一个数组

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称

返回值: 1 (是), 0(否)
intjson_is_object(int jsonHandle [, string subName]) 判断一个json对象或其名称为 subName 的子对象的值是否为一个json对象

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称

返回值: 1 (是), 0(否)
stringjson_get_value_string(int jsonHandle [, string subName]) 获取一个json对象或其名称为 subName 的子对象的 string 类型的值

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称
intjson_get_value_int(int jsonHandle [, string subName]) 获取一个json对象或其名称为 subName 的子对象的 int 类型的值

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称
longjson_get_value_long(int jsonHandle [, string subName]) 获取一个json对象或其名称为 subName 的子对象的 long 类型的值

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称
doublejson_get_value_double(int jsonHandle [, string subName]) 获取一个json对象或其名称为 subName 的子对象的 double 类型的值

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称
intjson_get_array_size(int jsonHandle [, string subName]) 获取一个json对象或其名称为 subName 的子对象的数组大小

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称
intjson_get_array_item(int jsonHandle [, string subName], int index) 获取一个json对象或其名称为 subName 的子对象的数组中索引为index的json对象名柄

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称
index:数组的索引

返回值: > 0(索引为index的json对象名柄), 0(不存在索引为index的json对象名柄)
intjson_free(int jsonHandle [, string subName]) 获取一个json对象或其名称为 subName 的子对象的 double 类型的值

参数:
jsonHandle:json对象的句柄
subName:可选参数,子对象的名称

 

绘图函数

函数 描述
intget_dc(int hWnd) 该函数获取指定窗口的客户区域或整个屏幕的显示设备上下文环境(DC)的句柄,可以在绘图函数中使用该句柄在设备上下文(DC)中绘图。

函数原型(Windows API): GetDC()

参数:
hWnd:要获取其DC的窗口的句柄。如果此值为0,则 get_dc() 获取整个屏幕的DC。

返回值:

如果函数成功,则返回值是指定窗口的客户区DC的句柄。
如果函数失败,则返回值为0。

注意:
使用公共DC绘画后,必须调用 release_dc() 函数以释放DC。

intcreate_compatible_dc(int hdc)

创建具有指定设备兼容的内存设备上下文(DC)。

函数原型(Windows API): CreateCompatibleDC()

参数:
hdc:现有DC的句柄。如果此句柄为0,则该函数将创建一个与应用程序当前屏幕兼容的内存DC。

返回值:
如果函数成功,则返回值是内存DC的句柄。
如果函数失败,则返回值为0。

intcreate_compatible_bitmap(int hdc, int width, int height) 创建与指定的设备上下文相关联的设备兼容的位图。

函数原型(Windows API): CreateCompatibleBitmap()

参数:
hdc:设备上下文的句柄。
width:位图宽度,以像素为单位。
height:位图高度,以像素为单位。

返回值:
如果函数成功,则返回值是兼容位图(DDB)的句柄。
如果函数失败,则返回值为0。
intselect_object(int hdc, int hgdiobj) 选择一个对象到指定的设备上下文(DC)。新对象将替换相同类型的先前对象。

函数原型(Windows API): SelectObject()

参数:
hdc:设备上下文的句柄。
hgdiobj:要选择的对象的句柄。

返回值:
如果函数成功,则返回值是要替换的对象的句柄。
如果函数失败,则返回值为0。
intcreate_pen(int penStyle, int width, int color) 创建具有指定的风格,宽度和颜色的逻辑画笔。随后可以将画笔选择到设备上下文(DC)中,并用于绘制直线和曲线。

函数原型(Windows API): CreatePen()

参数:
penStyle:画笔样式。参数取值请参考 CreatePen()系统常量 列表。
width:画笔的宽度,以逻辑单位表示。如果 width 为零,则无论当前变换如何,画笔的宽度均为单个像素。
color:画笔的颜色, 若要创建颜色值,请使用 rgb() 函数。

返回值:
如果该函数成功,则返回值是画笔的句柄。
如果函数失败,则返回值为0。
intcreate_solid_brush(int color) 创建具有指定颜色的逻辑画刷。

函数原型(Windows API): CreateSolidBrush()

参数:
color:画笔的颜色。 若要创建颜色值,请使用 rgb() 函数。

返回值:
如果函数成功,则返回逻辑画笔句柄。
如果函数失败,则返回值为0。
intget_stock_object(int object) 该函数获取预定义的备用画笔、画刷、或调色板的句柄。

函数原型(Windows API): GetStockObject()

参数:
object:对象的类型。参数取值请参考 GetStockObject()系统常量 列表。

返回值:
如果函数成功,则返回值是所请求逻辑对象的句柄。
如果函数失败,则返回值为0。
intdelete_object(int object) 删除逻辑画笔,画刷或调色板,释放与该对象相关联的所有系统资源。删除对象后,指定的句柄不再有效。

函数原型(Windows API): DeleteObject()

参数:
object:逻辑画笔,画刷或调色板的句柄。

返回值:
如果函数成功,则返回值为非零。
如果指定的句柄无效或当前已选择为DC,则返回值为零。
intdelete_dc(int dc) 删除指定的设备上下文(DC)。

函数原型(Windows API): DeleteDC()

参数:
dc:设备上下文的句柄。

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。
intrelease_dc(int hWnd, int dc) 释放设备上下文(DC)以供其他应用程序使用。函数的效果与设备上下文(DC)类型有关。它只释放公用的和设备上下文(DC),对于类或私有的则无效。

函数原型(Windows API): ReleaseDC()

参数:
hWnd:要释放其DC的窗口的句柄。
dc:要释放的DC的句柄。

返回值:
返回值指示是否释放了DC。如果释放了DC,则返回值为1。
如果未释放DC,则返回值为零。
intbit_blt(int hdcDest, int destX, int destY, int width, int height, int hdcSrc, int srcX, int srcY, int rop) 对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。

函数原型(Windows API): BitBlt()

参数:
hdcDest:目标设备上下文的句柄。
destX:目标矩形左上角的x坐标(以逻辑单位表示)。
destY:目标矩形左上角的y坐标(以逻辑单位表示)。
width:源矩形和目标矩形的宽度(以逻辑单位表示)。
height:源矩形和目标矩形的高度(以逻辑单位表示)。
hdcSrc:源设备上下文的句柄。
srcX:源矩形左上角的x坐标(以逻辑单位表示)。
srcY:源矩形左上角的y坐标(以逻辑单位表示)。
rop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。 参数取值请参考 BitBlt()系统常量 列表。

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。
intrgb(int r, int g, int b) 返回由指定分量确定的颜色,用于表示一个RGB(红绿蓝)颜色值。

函数原型(Windows API): RGB()

参数:
r:数值范围从 0 到 255,表示颜色的红色成份。
g:数值范围从 0 到 255,表示颜色的绿色成份。
b:数值范围从 0 到 255,表示颜色的蓝色成份。

注意:
1. 如果其中有一个参数的值超过 255 ,不会显示任何错误,但这个参数会被当做 255。
2. 如果3个参数的值都为零,则结果为黑色。如果3个参数的值都为255,则结果为白色。
3. 要提取RGB颜色值中的红色,绿色和蓝色分量的各个值,请分别使用 rv(), gv(), bv() 函数。

返回值:
返回值是由指定分量确定的颜色值。
intrv(int color) 提取用于红,绿,蓝(RGB)颜色中的红色成分的值。

函数原型(Windows API): GetRValue()

参数:
color:指定RGB颜色值。

返回值:
返回RGB颜色中的红色成分的值。
intgv(int color) 提取用于红,绿,蓝(RGB)颜色中的绿色成分的值。

函数原型(Windows API): GetGValue()

参数:
color:指定RGB颜色值。

返回值:
返回RGB颜色中的绿色成分的值。
intbv(int color) 提取用于红,绿,蓝(RGB)颜色中的蓝色成分的值。

函数原型(Windows API): GetBValue()

参数:
color:指定RGB颜色值。

返回值:
返回RGB颜色中的蓝色成分的值。
intset_pixel(int hdc, int x, int y, int color) 将指定坐标处的像素设为指定的颜色。

函数原型(Windows API): SetPixel()

参数:
dc:设备上下文的句柄。
x:要设置的点的X坐标。
y:要设置的点的y坐标。
color:用于绘制点的颜色。若要创建颜色值,请使用 rgb() 函数。

注意:
如果像素坐标位于当前剪切区域之外,则该函数将失败。

返回值:
如果函数成功,则返回值为函数将像素设置为的RGB值。当找不到与指定颜色完全匹配的颜色时,该值可能不同于color指定的颜色。
如果函数失败,则返回值为-1。
intset_pixel_v(int hdc, int x, int y, int color) 将指定坐标处的像素设为指定的颜色。

函数原型(Windows API): SetPixelv()

参数:
dc:设备上下文的句柄。
x:要设置的点的X坐标(以逻辑单位表示)。
y:要设置的点的y坐标(以逻辑单位表示)。
color:用于绘制点的颜色。若要创建颜色值,请使用 rgb() 函数。

注意:
1. 如果像素坐标位于当前剪切区域之外,则该函数将失败。
2. set_pixel_v() 比 set_pixel() 快,因为它不需要返回实际绘制点的颜色值。

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。
intget_pixel(int hdc, int x, int y) 获取指定坐标点的像素的RGB颜色值。

函数原型(Windows API): GetPixel()

参数:
dc:设备上下文的句柄。
x:要检查的像素的X坐标(以逻辑单位表示)。
y:要检查的像素的y坐标(以逻辑单位表示)。

返回值:
返回值是指定像素RGB颜色值。如果像素在当前裁剪区域之外,则返回值为4294967295。
intline(int dc, int startX, int startY, int endX, int endY) 用当前画笔画一条线,从指定位置(startX, startY)连到一个指定的点(endX, endY)。

函数原型(Windows API): MoveToEx() + LineTo()

参数:
dc:设备上下文的句柄。
startX:指定起点线的x坐标。
startY:指定起点线的y坐标。
endX:指定终点线的x坐标。
endY:指定终点线的y坐标。

返回值:
如果函数成功,则返回值为非零。前位置变成(endX, endY)。
如果函数失败,则返回值为零。
intrectangle(int dc, int startX, int startY, int endX, int endY) 绘制一个矩形。使用当前的画笔勾勒出矩形并使用当前的画刷填充。

函数原型(Windows API): Rectangle()

参数:
dc:设备上下文的句柄。
startX:矩形左上角的x坐标(以逻辑坐标表示)。
startY:矩形左上角的y坐标(以逻辑坐标表示)。
endX:矩形右下角的x坐标(以逻辑坐标表示)。
endY:矩形右下角的y坐标(以逻辑坐标表示)。

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。

备注:
绘制的矩形不包括底部和右侧边缘。
如果使用 mkPS_NULL 笔,则矩形的尺寸是高度减少1个像素,宽度减少1个像素。
intfill_rect(int dc, int startX, int startY, int endX, int endY, int hbr) 通过使用指定的画刷填充矩形,此功能包括左侧和顶部边框,但不包括矩形的右侧和底部边框。

函数原型(Windows API): FillRect()

参数:
dc:设备上下文的句柄。
startX:矩形左上角的x坐标(以逻辑坐标表示)。
startY:矩形左上角的y坐标(以逻辑坐标表示)。
endX:矩形右下角的x坐标(以逻辑坐标表示)。
endY:矩形右下角的y坐标(以逻辑坐标表示)。
hbr:用于填充矩形的画笔的句柄。

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。
intround_rect(int dc, int startX, int startY, int endX, int endY, int width, int height) 绘制一个圆角矩形。使用当前的画笔勾勒出矩形并使用当前的画刷填充。

函数原型(Windows API): RoundRect()

参数:
dc:设备上下文的句柄。
startX:矩形左上角的x坐标(以逻辑坐标表示)。
startY:矩形左上角的y坐标(以逻辑坐标表示)。
endX:矩形右下角的x坐标(以逻辑坐标表示)。
endY:矩形右下角的y坐标(以逻辑坐标表示)。
width:指定用来画圆角的椭圆的宽。
height:指定用来画圆角的椭圆的高。

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。
intellipse(int dc, int startX, int startY, int endX, int endY) 绘制一个椭圆。椭圆的中心是指定边界矩形的中心。使用当前的笔勾勒出椭圆,并使用当前的画刷填充椭圆。

函数原型(Windows API): Ellipse()

参数:
dc:设备上下文的句柄。
startX:矩形左上角的x坐标(以逻辑坐标表示)。
startY:矩形左上角的y坐标(以逻辑坐标表示)。
endX:矩形右下角的x坐标(以逻辑坐标表示)。
endY:矩形右下角的y坐标(以逻辑坐标表示)。

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。
intarc(int dc, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) 绘制一个椭圆弧。

函数原型(Windows API): Arc()

参数:
dc:设备上下文的句柄。
x1:边界矩形左上角的x坐标
y1:边界矩形左上角的y坐标
x2:边界矩形右下角的x坐标
y2:边界矩形右下角的y坐标
x3:定义圆弧起点的径向线终点的x坐标
y3:定义圆弧起点的径向线终点的y坐标
x4:定义弧的终点的径向线终点的x坐标
y4:定义弧的终点的径向线终点的y坐标

返回值:
如果绘制了弧,则返回值为非零。
如果未绘制弧,则返回值为零。
intpie(int dc, int left, int top, int right, int bottom, int xr1, int yr1, int xr2, int yr2) 绘制饼形。通过使用当前的笔勾勒出饼图,并使用当前的笔刷填充饼图。

函数原型(Windows API): Pie()

参数:
dc:设备上下文的句柄。
left:边界矩形左上角的x坐标
top:边界矩形左上角的y坐标
right:边界矩形右下角的x坐标
bottom:边界矩形右下角的y坐标
xr1:第一条径向线端点的x坐标
yr1:第一条径向线端点的y坐标
xr2:第二条径向线端点的x坐标
yr2:第二条径向线端点的y坐标

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。
intchord(int dc, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) 绘制和弦。使用当前的画笔勾勒出和弦,使用当前的画刷填充和弦。

函数原型(Windows API): Chord()

参数:
dc:设备上下文的句柄。
x1:边界矩形左上角的x坐标
y1:边界矩形左上角的y坐标
x2:边界矩形右下角的x坐标
y2:边界矩形右下角的y坐标
x3:和弦的起点x坐标
y3:和弦的起点y坐标
x4:和弦的终点x坐标
y4:和弦的终点y坐标

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。
intdraw_bmp(int dc, int x, int y, Bmp bmp) 绘制Bmp位图。

参数:
dc:设备上下文的句柄。
x:x坐标
y:y坐标
bmp:位图对象

返回值:
如果函数成功,则返回值为1。
如果函数失败,则返回值为0。
intinvalidate_rect(int hWnd, int left, int top, int right, int bottom, int bErase) 添加一个矩形到指定窗口的更新区域。更新区域代表必须重新绘制的窗口工作区的一部分。

函数原型(Windows API): InvalidateRect()

参数:
hWnd:要更新的客户区所在的窗体的句柄。如果此参数为0,则系统将使所有窗口无效并重新绘制所有窗口。
left:边界矩形左上角的x坐标
top:边界矩形左上角的y坐标
right:边界矩形右下角的x坐标
bottom:边界矩形右下角的y坐标
bErase:指定在处理更新区域时是否要擦除更新区域内的背景。如果此参数为1,则擦除背景。如果此参数为0,则背景保持不变。

返回值:
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。

 

其他函数

函数 描述
voidsleep(int millisecond) 延迟脚本的运行,单位:毫秒。示例:sleep(1500)
voidpause(int isAlert) 暂停脚本的运行,参数:isAlert 表示是否弹出【暂停对话框】,取值:0(不弹) 或 1(弹出)。
   
voidprint(T v) 在 MKScript 运行界面的信息框中输出一个字符串。示例:print("你好\r\nMKScript")
voidprintln(T v) 在 MKScript 运行界面的信息框中输出一个字符串并换行。示例:println("你好,MKScript")
voidprint_double(double v, int decimal) 在 MKScript 运行界面的信息框中输出一个浮点数。示例:print_double(3.14, 2)
其中:decimal 表示保留的小数位。
   
voidconsole_print(T v) 在控制台标准输出流输出一个字符串。示例:console_print("你好\r\nMKScript")
注意:输出的字符串编码:utf-8
voidconsole_println(T v) 在控制台标准输出流输出一个字符串并换行。示例:console_println("你好,MKScript")
注意:输出的字符串编码:utf-8
   
voidconfig_paused_show_alert(int status) 配置当MKScript脚本暂停运行时,是否需要弹出暂停提示对话框。
MKScript默认当脚本暂停运行时,会弹出暂停提示对话框,可通过该函数取消弹出提示对话框: config_paused_show_alert(mkFalse)
voidconfig_stopped_show_alert(int status) 配置当MKScript脚本中止运行时,是否需要弹出中止提示对话框。
MKScript默认当脚本中止运行时,会弹出中止提示对话框,可通过该函数取消弹出提示对话框: config_stopped_show_alert(mkFalse)
voidconfig_ended_show_alert(int status) 配置当MKScript脚本运行结束时,是否需要弹出结束提示对话框。
MKScript默认当脚本运行结束时,会弹出结束提示对话框,可通过该函数取消弹出提示对话框: config_ended_show_alert(mkFalse)
   
voidwait_mouse_left_down([int *x, int *y], [int isBlockMouseMessage]) 暂停当前运行的脚本,等待用户点击一下鼠标左键后,继续运行脚本。

参数:
x, y:可选参数,用户点击鼠标左键时,鼠标所处屏幕的坐标。
isBlockMouseMessage:可选参数,用户点击鼠标左键时,是否屏蔽这个鼠标消息。默认:不屏蔽。
intwait_key_press([int isBlockKeyMessage]) 暂停当前运行的脚本,等待用户按下键盘上任意一个按键后,继续运行脚本。

参数:
isBlockKeyMessage:可选参数,用户按下键盘上任意一个按键时,是否屏蔽这个按键消息。默认:不屏蔽。

返回值:返回用户按下的键盘按键对应的虚拟键码。
   
intblock_input(int fBlockIt) 阻止键盘和鼠标输入事件到达应用程序(禁止用户操作键盘和鼠标)。

函数原型(Windows API): block_input()

参数:
fBlockIt:如果此参数为 1,则阻止键盘和鼠标输入事件。 如果此参数为 0,则取消阻止键盘和鼠标事件。
请注意,只有阻止输入的线程才能成功取消阻止输入。

返回值:
如果该函数成功,则返回值为非零值。
如果输入已被阻止,则返回值为零。

在以下情况下,系统将取消阻止输入:

1. 阻止输入的线程意外退出,而不调用block_input(0)。 在这种情况下,系统会正确清理并重新启用输入。
2. 用户按 Ctrl+Alt+DEL 或系统调用 硬系统错误 模式消息框 (例如,当程序故障或设备发生故障时) 。
   
voidcls() 将 MKScript 运行界面的信息框中的所有内容清空,类似清屏的作用。
   
intrun(string filePath, [string parameters], [string directory], [int nShowCmd]) 运行一个外部程序(或者是打开一个已存在文件)。

函数原型(Windows API): ShellExecute()

返回值:
返回值大于32表示执行成功
返回值小于32表示执行错误
返回值可能的错误有:
= 0 (内存不足)
= 2 (文件名错误)
= 3 (路径名错误)

参数:
filePath:指定要打开的文件或程序
parameters:可选参数,给要打开的程序指定参数,如果打开的是文件这里应该是一个空白字符串
directory:可选参数,缺省目录
nShowCmd:可选参数,文件或程序的打开选项,默认值:5,可以是以下常量值
常量名 类型 描述
mkSW_HIDE int 0 隐藏
mkSW_SHOWNOACTIVATE int 4 用最近的大小和位置显示,不激活
mkSW_SHOW int 5 用最近的大小和位置显示,激活
mkSW_MAXIMIZE int 3 最大化,激活
mkSW_MINIMIZE int 6 最小化,不激活

   
ArrayList<string>get_cmd_argv() 获取脚本命令行参数,命令行相关参数以动态数组 ArrayList<string> 形式返回。
dos> mkscript test.m 参数1 参数2 参数3
   
intget_last_error() 该函数返回最近的错误代码值。
stringget_last_error_message([int errorID]) 该函数返回最近的错误代码值对应的错误描述信息。
errorID:可选参数,错误代码值。
   
voidplay_alert_sound(int times) 播放提示音。在脚本运行过程中,当符合一定的条件时,可发出提示音来提示用户。也可以在脚本运行快要结束的时候,发出提示音告诉用户,脚本已结束运行。

参数:times 表示要循环播放提示音的次数,如果值为 -1,表示一直循环播放提示音。
voidstop_alert_sound() 停止播放提示音。
   
stringhardware_get_cpu() 返回计算机的cpu信息,例如:9-14857-6-2(体系结构-版本-级别-核心数量)
inthardware_get_cpu_logical_number() 返回计算机的逻辑处理器数量
stringhardware_get_mac() 返回网卡地址信息,例如:0-1A-92-35-E4-D0
   
stringcolor_hex(int color) 返回颜色 color 的十六进制字符串,格式如:#FF0000
intcolor_hex_to_int(string color_hex) 将十六进制颜色值(#FF0000)转换为整数值并返回
   
stringguid() 返回全局唯一标识符,例如:DE0A821E-3D87-461C-A84A-057AD2AEECBD
   
voidfree(int ptr) 释放内存空间的函数。可以释放由 make_copy_data() 函数申请的内存空间。

C语言函数原型: free()

参数:
ptr:指向一个要释放的内存句柄,该内存之前是通过调用 make_copy_data() 进行分配的。
   
intglobal_alloc_string(int flags, string text) 该函数从堆中分配足够数目的字节数来存储text。简称全局堆分配。

函数原型(Windows API): GlobalAlloc()

参数:
flags:内存分配属性。 如果指定零,则默认值 为 mkGMEM_FIXED,可使用的值如下:
常量名 含义
mkGHND 0x0042 合并 mkGMEM_MOVEABLE 和 mkGMEM_ZEROINIT。
mkGMEM_FIXED 0x0000 分配固定内存。 返回值为指针。
mkGMEM_MOVEABLE 0x0002 分配可移动内存。 内存块永远不会在物理内存中移动,但它们可以在默认堆内移动。
返回值是内存对象的句柄。
若要将句柄转换为指针,请使用 global_lock() 函数。
此值不能与 mkGMEM_FIXED 结合使用。
mkGMEM_ZEROINIT 0x0040 将内存内容初始化为零。
mkGPTR 0x0040 合并 mkGMEM_FIXED 和 mkGMEM_ZEROINIT。
text:从堆中分配内存空间存储的字符串。

返回值:
若函数调用成功,则返回一个新分配的内存对象的句柄。
若函数调用失败,则返回 mkNULL

注意:不再使用的内存,可以使用 global_free() 函数释放其占用的内存空间。
intglobal_alloc_byte_array(int flags, byte data[], int count) 该函数从堆中分配 count 个字节数来存储 data。简称全局堆分配。

函数原型(Windows API): GlobalAlloc()

参数:
flags:内存分配属性。 如果指定零,则默认值 为 mkGMEM_FIXED,可使用的值如下:
常量名 含义
mkGHND 0x0042 合并 mkGMEM_MOVEABLE 和 mkGMEM_ZEROINIT。
mkGMEM_FIXED 0x0000 分配固定内存。 返回值为指针。
mkGMEM_MOVEABLE 0x0002 分配可移动内存。 内存块永远不会在物理内存中移动,但它们可以在默认堆内移动。
返回值是内存对象的句柄。
若要将句柄转换为指针,请使用 global_lock() 函数。
此值不能与 mkGMEM_FIXED 结合使用。
mkGMEM_ZEROINIT 0x0040 将内存内容初始化为零。
mkGPTR 0x0040 合并 mkGMEM_FIXED 和 mkGMEM_ZEROINIT。
data:存储数据的字节数组。
count:字节数组(data)的长度 。

返回值:
若函数调用成功,则返回一个新分配的内存对象的句柄。
若函数调用失败,则返回 mkNULL

注意:不再使用的内存,可以使用 global_free() 函数释放其占用的内存空间。
intglobal_size(int hMem) 检索指定全局内存对象的当前大小(以字节为单位)。

函数原型(Windows API): GlobalSize()

参数:
hMem:全局内存对象的句柄。此句柄由 global_alloc_string() 或 global_alloc_byte_array() 创建。

返回值:
如果函数成功,则返回值为指定全局内存对象的大小(以字节为单位)。
如果指定的句柄无效或对象已被丢弃,则返回值为零。
intglobal_lock(int hMem) 锁定全局内存对象并返回指向对象内存块第一个字节的指针。

函数原型(Windows API): GlobalLock()

参数:
hMem:全局内存对象的句柄。此句柄由 global_alloc_string() 或 global_alloc_byte_array() 创建。

返回值:
如果函数成功,则返回值是指向内存块第一个字节的指针。
如果函数失败,则返回值为零。
intglobal_unlock(int hMem) 递减与使用 mkGMEM_MOVEABLE 分配的内存对象关联的锁计数。 此函数对 mkGMEM_FIXED 分配的内存对象没有影响。

函数原型(Windows API): GlobalUnlock()

参数:
hMem:全局内存对象的句柄。此句柄由 global_alloc_string() 或 global_alloc_byte_array() 创建。

返回值:

如果内存对象在递减锁计数后仍处于锁定状态,则返回值为非零值。 如果内存对象在递减锁计数后解锁,则函数返回零, get_last_error() 返回0。

如果函数失败,则返回值为零,get_last_error() 返回除0以外的值。

intglobal_free(int hMem) 释放指定的全局内存对象并使其句柄失效。

函数原型(Windows API): GlobalFree()

参数:
hMem:全局内存对象的句柄。此句柄由 global_alloc_string() 或 global_alloc_byte_array() 创建。

返回值:

如果函数成功,则返回值为 NULL。
如果函数失败,则返回值等于全局内存对象的句柄。

   
doubleversion() 返回当前MKScript脚本语言的版本号。
voidexit([int status]) 中止脚本的运行,程序退出,脚本中止时不弹出提示对话框。
status:可选参数,返回给父进程的状态值。
voidatexit(func_name([...]))

在 MKScript 脚本运行过程中,执行到 exit() 函数或用户关闭 MKScript 窗口时,按后进先出的顺序调用 func_name()。

该函数的效果类似于ANSI 标准函数:atexit()

 

系统常量

常量名 类型
mkTrue int 1
mkFalse int 0
     
mkNull int 0
     
mkOk int 1
mkCancel int 2
mkYes int 6
mkNo int 7
     
mkOkCancel int 1
mkYesNo int 4
mkYesNoCancel int 3
     
mkPrompt_String int 0
mkPrompt_Char int 1
mkPrompt_Int int 2
mkPrompt_Numeric int 3
     
mkVK_Back int 8
mkVK_Tab int 9
mkVK_Clear int 12
mkVK_Enter int 13
mkVK_Shift int 16
mkVK_Ctrl int 17
mkVK_Alt int 18
mkVK_CapsLock int 20
mkVK_Esc int 27
mkVK_Space int 32
mkVK_PageUp int 33
mkVK_PageDown int 34
mkVK_End int 35
mkVK_Home int 36
mkVK_Left int 37
mkVK_Up int 38
mkVK_Right int 39
mkVK_Down int 40
mkVK_Snapshot int 44
mkVK_Insert int 45
mkVK_Delete int 46
mkVK_Win int 91
mkVK_F1 int 112
mkVK_F2 int 113
mkVK_F3 int 114
mkVK_F4 int 115
mkVK_F5 int 116
mkVK_F6 int 117
mkVK_F7 int 118
mkVK_F8 int 119
mkVK_F9 int 120
mkVK_F10 int 121
mkVK_F11 int 122
mkVK_F12 int 123
     
mkCr string "\r"
mkLf string "\n"
mkCrLf string "\r\n"
     
mkMouse_ARROW int 65539
mkMouse_IBEAM int 65541
mkMouse_WAIT int 65543
mkMouse_CROSS int 65545
mkMouse_UPARROW int 65547
mkMouse_SIZENWSE int 65549
mkMouse_SIZENESW int 65551
mkMouse_SIZEWE int 65553
mkMouse_SIZENS int 65555
mkMouse_SIZEALL int 65557
mkMouse_NO int 65559
mkMouse_APPSTARTING int 65561
mkMouse_HELP int 65563
mkMouse_HAND int 65567
   
mkSW_FORCEMINIMIZE int 11
mkSW_HIDE int 0
mkSW_MAXIMIZE int 3
mkSW_MINIMIZE int 6
mkSW_RESTORE int 9
mkSW_SHOW int 5
mkSW_SHOWDEFAULT int 10
mkSW_SHOWMAXIMIZED int 3
mkSW_SHOWMINIMIZED int 2
mkSW_SHOWMINNOACTIVE int 7
mkSW_SHOWNA int 8
mkSW_SHOWNOACTIVATE int 4
mkSW_SHOWNORMAL int 1
   
mkHWND_BOTTOM int 1
mkHWND_NOTOPMOST int -2
mkHWND_TOP int 0
mkHWND_TOPMOST int -1
mkHWND_MESSAGE int -3
mkHWND_BROADCAST int 65535
     
mkSWP_ASYNCWINDOWPOS int 16384
mkSWP_DEFERERASE int 8192
mkSWP_DRAWFRAME int 32
mkSWP_FRAMECHANGED int 32
mkSWP_HIDEWINDOW int 128
mkSWP_NOACTIVATE int 16
mkSWP_NOCOPYBITS int 256
mkSWP_NOMOVE int 2
mkSWP_NOOWNERZORDER int 512
mkSWP_NOREDRAW int 8
mkSWP_NOREPOSITION int 512
mkSWP_NOSENDCHANGING int 1024
mkSWP_NOSIZE int 1
mkSWP_NOZORDER int 4
mkSWP_SHOWWINDOW int 64
   
mkGW_CHILD int 5
mkGW_ENABLEDPOPUP int 6
mkGW_HWNDFIRST int 0
mkGW_HWNDLAST int 1
mkGW_HWNDNEXT int 2
mkGW_HWNDPREV int 3
mkGW_OWNER int 4
     
mkBST_CHECKED int 1
mkBST_INDETERMINATE int 2
mkBST_UNCHECKED int 0
   
mkSMTO_ABORTIFHUNG int 2
mkSMTO_BLOCK int 1
mkSMTO_NORMAL int 0
mkSMTO_NOTIMEOUTIFNOTHUNG int 8
mkSMTO_ERRORONEXIT int 32
   
mkPS_SOLID int 0
mkPS_DASH int 1
mkPS_DOT int 2
mkPS_DASHDOT int 3
mkPS_DASHDOTDOT int 4
mkPS_NULL int 5
mkPS_INSIDEFRAME int 6
     
mkBLACK_BRUSH int 4
mkDKGRAY_BRUSH int 3
mkDC_BRUSH int 18
mkGRAY_BRUSH int 2
mkHOLLOW_BRUSH int 5
mkLTGRAY_BRUSH int 1
mkNULL_BRUSH int 5
mkWHITE_BRUSH int 0
     
mkBLACK_PEN int 7
mkDC_PEN int 19
mkNULL_PEN int 8
mkWHITE_PEN int 6
   
mkBLACKNESS int 66
mkCAPTUREBLT int 1073741824
mkDSTINVERT int 5570569
mkMERGECOPY int 12583114
mkMERGEPAINT int 12255782
mkNOMIRRORBITMAP int 2147483648
mkNOTSRCCOPY int 3342344
mkNOTSRCERASE int 1114278
mkPATCOPY int 15728673
mkPATINVERT int 5898313
mkPATPAINT int 16452105
mkSRCAND int 8913094
mkSRCCOPY int 13369376
mkSRCERASE int 4457256
mkSRCINVERT int 6684742
mkSRCPAINT int 15597702
mkWHITENESS int 16711778
   
mkRDW_ERASE int 4
mkRDW_FRAME int 1024
mkRDW_INTERNALPAINT int 2
mkRDW_INVALIDATE int 1
mkRDW_NOERASE int 32
mkRDW_NOFRAME int 2048
mkRDW_NOINTERNALPAINT   16
mkRDW_VALIDATE int 8
mkRDW_ERASENOW int 512
mkRDW_UPDATENOW int 256
mkRDW_ALLCHILDREN int 128
mkRDW_NOCHILDREN int 64
   
mkCOINIT_APARTMENTTHREADED int 2
mkCOINIT_MULTITHREADED   0
mkCOINIT_DISABLE_OLE1DDE int 4
mkCOINIT_SPEED_OVER_MEMORY int 8
   
mkCSIDL_DESKTOP int 0
mkCSIDL_APPDATA int 26
mkCSIDL_COMMON_APPDATA int 35
mkCSIDL_COMMON_DESKTOPDIRECTORY int 25
mkCSIDL_COMMON_DOCUMENTS int 46
mkCSIDL_COMMON_PICTURES int 54
mkCSIDL_COMMON_TEMPLATES int 45
mkCSIDL_DESKTOPDIRECTORY int 16
mkCSIDL_LOCAL_APPDATA int 28
mkCSIDL_MYPICTURES int 39
mkCSIDL_SYSTEM int 37
mkCSIDL_TEMPLATES int 21
mkCSIDL_SYSTEMX86 int 41
mkCSIDL_PERSONAL int 5
mkCSIDL_MYDOCUMENTS int 5
   
mkSecond int 1
mkMinute int 2
mkHour int 3
mkDay int 4
mkMonth int 5
mkYear int 6
   
mkVT_Empty int 0
mkVT_Null int 1
mkVT_Short int 2
mkVT_Int int 3
mkVT_Float int 4
mkVT_Double int 5
mkVT_Currency int 6
mkVT_Date int 7
mkVT_String int 8
mkVT_Object int 9
mkVT_Error int 10
mkVT_Boolean int 11
mkVT_Variant int 12
mkVT_Unknown int 13
mkVT_Decimal int 14
mkVT_Char int 16
mkVT_Byte int 17
mkVT_Long int 20
mkVT_Array int 8192
     
mkMK_LBUTTON int 1
mkMK_RBUTTON int 2
mkMK_SHIFT int 4
mkMK_CONTROL int 8
mkMK_MBUTTON int 16
mkMK_XBUTTON1 int 32
mkMK_XBUTTON2 int 64
   
mkGHND int 0x0042
mkGMEM_FIXED int 0x0000
mkGMEM_MOVEABLE int 0x0002
mkGMEM_ZEROINIT int 0x0040
mkGPTR int 0x0040
     
mkWM_COPYDATA int 0x004A
mkWM_COMMAND int 0x0111
mkWM_CLOSE int 0x0010
mkWM_DESTROY int 0x0002
     
mkJSON_False int 1
mkJSON_True int 2
mkJSON_NULL int 4
mkJSON_Number int 8
mkJSON_String int 16
mkJSON_Array int 32
mkJSON_Object int 64
mkJSON_Raw int 128