溪流 WarKey 3.0 论坛预览版 发布,支持Lua脚本
昨晚搞到近 2 点,终于把相关部分搞完了,放出个预览版玩玩。这一版本将支持组合键,比如,可以分别改Q、Ctrl+Q、Alt+Q 等,也将支持所有鼠标操作。此外,增加了一个脚本系统,允许用户进行更大程度上的自定义。
脚本使用 lua 语言,格式大致为(正式版出来之前可能还会有改动):
-----------------------------------------------------------------------------
-- SampleExtension.lua
Extension =
{
Application = "xlWarKey", --请勿修改
Version = "3.0", --请勿修改
NameSpace = "http://www.streamlet.org/api/xlwarkey/3.0", --请勿修改
ExtensionName = <span style="color:#a31515">"SampleExtension"</span>, <span style="color:#008000">--请勿修改</span>
Description = <span style="color:#a31515">"This is a sample extension."</span>,
Configuration =
{
setting1 = <span style="color:#008000">--设置项1(本例不使用)</span>
{
Type = <span style="color:#a31515">"number"</span>,
Desc = <span style="color:#a31515">"Please input an integer."</span>
},
setting2 = <span style="color:#008000">--设置项2(本例不使用)</span>
{
Type = <span style="color:#a31515">"string"</span>,
Desc = <span style="color:#a31515">"Please input a string."</span>
}
<span style="color:#008000">--其他设置项</span>
},
Entrance = <span style="color:#00f">function</span> (id) <span style="color:#008000">-- 入口函数</span>
<span style="color:#008000">-- 所有代码都请写在这里</span>
<span style="color:#00f">return</span> <span style="color:#00f">true</span>; <span style="color:#008000">--必须返回 true 或者 false。返回值意义目前暂未定义。</span>
<span style="color:#00f">end</span>
};
----------------------------------------------------------------------------
目前支持的 API 有:
void PressKey(number vkcode [,
boolean ctrl [, boolean shift [, boolean alt [, boolean win]]]])
按下某键。
第一个参数为虚拟键码,也就是 Windows 的 VK_,脚本里给出了一个 Keys 变量,可以直接使用 Keys.VK_。其中 0 - 9 用 Keys.VK_0、……、Keys.VK_9,字母键用 Keys.VK_A、……、Keys.VK_Z。
后面四个表示状态键是否被按下。默认 false。
若要按下 Ctrl+1,可写成 PressKey(Keys.VK_1, true, false, false, false);
也可简写为 PressKey(Keys.VK_1, true)。
void ReleaseKey(number vkcode [,
boolean ctrl [, boolean shift [, boolean alt [, boolean win]]]])
同上,放开某键。
void MoveMouse(number x, number y)
移动鼠标到 (x, y) 位置。此坐标是相对于屏幕上最前面的那个窗口的客户区的左上角的(以后将相对于魔兽窗口)。
void PressMouseButton(number button)
button: 1 - Left
2 - Right
3 - XButton1
4 - XButton2
按下鼠标按钮
void ReleaseMouseButton(number button)
button: 1 - Left
2 - Right
3 - XButton1
4 - XButton2
放开鼠标按钮
void MouseWheel(number button, number delta)
button: 1 - VWheel
2 - HWheel
滚动鼠标滚轮
void SetClipboard(string str)
将一个字符串放到剪贴板
string AnsiToUtf8(string ansi)
将 Ansi 字符串转换为 UTF-8
width, height GetClientSize()
取客户区大小。目前是取屏幕上最前面的那个窗口的客户区的大小(以后将会是魔兽窗口的大小)。
x, y GetCursorPosition()
取鼠标光标当前位置。此坐标是相对于屏幕上最前面的那个窗口的客户区的左上角的(以后将相对于魔兽窗口)。
void Delay(number milliseconds)
等待一段时间,参数的单位是毫秒。
上面附件中的示例脚本实现了一次性扔掉物品栏所有物品的功能。请打开魔兽,然后按 Alt+1 来看效果。
论坛相应主题:http://forum.streamlet.org/thread-236-1-1.html
介绍到此结束。
最后,如果有兴趣的,希望探讨下,目前的脚本格式定义是否合理,API 设置是否合理,脚本安全性如何控制,等等。
欢迎在下面评论中跟帖。
首发:http://www.cppblog.com/Streamlet/archive/2010/05/10/114988.html