WGestures 鼠标手势开源工具本是Win扩展利器;经过一段时间的折腾,我发现简直是交易软件的扩展神器; 因没什么普及文章,大多数股民朋友并不知道怎么用;为了群策群力发展更多的交易软件扩展功能,我就先在这里写些 WGestures 工具的精通要点与功能实现; WGestures 官方下载 一、WGestures 设快捷涨跌停买卖按键序列; 鼠标右键+滚轮向下=涨停闪买,按键序列代码:.{sleep 300}{+}.{enter} 鼠标右键+滚轮向上=跌停闪卖,按键序列代码:.{sleep 300}{-}.{enter} (图1.1) 二、复制股名,自动转股码并在通达信、同花顺里模拟键盘敲击; 本功能需要 两个文件「xxxxxx.vbs」和「A股.txt」 先贴「xxxxxx.vbs」 脚本源码,本人原创首发; Dim ClipText Dim Shell Dim objHTML Dim regEx, SKtext Dim dir0, SkALL, StockN, StockX, StockNAME, StockSC, xxxxxx '股票名称代码变量 dir0 = left(wscript.scriptfullname,instrrev(wscript.scriptfullname,"\")-1) & "\A股.txt" '当前目录路径 Set Shell = WScript.CreateObject("Wscript.Shell") '调用键盘 Set objHTML = CreateObject("htmlfile") '取剪贴板内容 On Error Resume Next ClipText = objHTML.ParentWindow.ClipboardData.GetData("text") '取剪贴板内容 wscript.sleep 10 Set regEx = CreateObject("VBScript.regexp") '正则表达式 regEx.Global = True regEx.Pattern = "[^a-zA-Z\d\u4e00-\u9fa5]" '匹配非英文数字中文 SKtext = Left(regEx.Replace(ClipText, ""),13) '任意长文只截取前13个字符 regEx.Pattern = "\D+" '匹配非数字 StockX = Left(regEx.Replace(SKtext, ""),6) '替换非数字,只识别13个字符的前六位数字 If Len(StockX) = 6 And isnumeric(StockX) Then '必须判断字符有六位 xxxxxx = StockX Else: regEx.Pattern = "[^a-zA-Z\u4e00-\u9fa5]" '匹配非中文 StockN = Left(regEx.Replace(SKtext, ""),4) '替换非中文后,只识别前4个汉字是否为股名 set SkALL = createobject("scripting.filesystemobject").opentextfile(dir0) '取本地A股.txt内容 SkALL = SkALL.readall '取本地A股.txt内容 StockNAME = Mid(SkALL, InStr(SkALL, StockN), Len(StockN)) '调用剪贴板的股名 If StockNAME <> StockN Then StockNAME = Left(StockN,3) '股名长度 xxxxxx = Mid(SkALL, InStr(SkALL, StockNAME)-7,6) '股名转代码 End If wscript.sleep 10 If Len(xxxxxx) = 6 And isnumeric(xxxxxx) Then '判断股票代码,必须再判断字符有六位 Shell.SendKeys left(xxxxxx,1) '键入第一位股码" wscript.sleep 300 '暂停300毫秒" Shell.SendKeys right(xxxxxx,5) '键入后五位股码" Shell.SendKeys"{Enter}" End If Set dir0 = Nothing Set ClipText = Nothing Set Shell = Nothing Set objHTML = Nothing Set Times = Nothing Set StockN = Nothing Set StockNAME = Nothing Set StockX = Nothing Set xxxxxx = Nothing Set regEx = Nothing Set SKtext = Nothing Set SkALL = Nothing 请将以上源码用记事本另存为「xxxxxx.vbs」 然后在通达信里可获得所需的另一个全目录股名代码的文本「A股.txt」 打开通达信点击「A股」,按键34打开「数据导出」,选「报表中所有数据」,「Excel 文件」导出; 然后打开 Excel 文件,全选B列进行三步替换: 1、将双字符「A」全替换为单字符「A」 2、将 「空格符」全替换去掉; 3、将「*ST」全替换为「ST」 最后将AB两列复制到记事本另存为 A股.txt (图2.1) 两个文件必须放在一起建议路径设为 D:\Program Files\VBS,然后就可以根据下图设置 WGestures测试操作; (图2.2) 那如何将通达信与同花顺用 WGestures 联动呢?文末再讲这个问题。 先说些 WGestures 的具体概念,究竟什么是鼠标手势操作?你可以想象成用鼠标右键在屏幕上写字,所写横竖撇捺折的每一笔划均可触发你设定的一个指令。比如上图2.2的功能,你写了一横后便触发你设定的功能执行了「xxxxxx.vbs」。 汉字 「米」如果从中心点向外写的话共有八笔对应八个方向,在 WGestures 中就可设置为八种手势指令; 一笔划可以定义为一级手势 二笔组合则定义为二级手势 三笔以上就定义为三级手势 相对于其他软件,在 WGestures 中鼠标按键可组合成特级快捷键,无需手势配合;比如开头我们设定的涨停闪买「鼠标右键+滚轮向下」; WGestures 中还有个特性就是可选择设定手势为「全局通用」或「仅对某个软件单设」。 一二三级手势可以对应PC操作动作频繁度来区分,比如 WGestures 的原生手势设定:右键向上为「复制」,右键向下为「粘贴」。 除了频繁度还可以用逻辑联想来设定,比如划分屏幕米字中心: 点击右斜下角触发了所有程序最小化到桌面,我们可以对应「右斜下」手势设定快捷键「Win+D」,反方向「左斜上」的手势则可联想设定为程序任务切换「Alt+Tab」。 同理左下角对应开始屏幕,我们就把「左斜下」手势设定为触发「Win」键,反方向「右斜上」设定为 窗口控制 窗口操作 「最大化/复原」;为什么不设定关闭窗口呢?因为一级手势误触率高。 对容错率低的指令一般要设置为三级手势。如果我们用 Clean up (清除) 第一个字母 C的手写过程设为手势然后触发「Delete」键,反写C的手势就可以设定为组合键「Ctrl+Z」来撤消PC误操作。 一些重要设定… 在全局下:请将鼠标「右键+左键」设为触发「Ctrl+C」,「右键+滚轮中键」设为触发「Ctrl+V」;同时也请保留 WGestures 里复制粘贴的原生设定; 在全局下:请将「鼠标右键+滚轮向下」设为向下翻页「PGDN」,及「鼠标右键+滚轮向上」向上翻页设为「PAUP」;请放心并不影响通达信涨停闪买、跌停闪卖的手势设定,因为图1.1里我们仅对通达信单独设定; 一些经历时间很久才有的经验… 对于不同品牌浏览器、或文字阅读窗口、或Win资源管理器虽然组合键命令有所不同,但请尽量用相同手势实现统一的操作结果。浏览器的鼠标手势「傲游浏览器」好像是第一原创首发,建议请以「傲游浏览器」的手势为蓝本统一操作不同品牌浏览器,再柔合其他阅读软件。 三、WGestures任意文本划词搜索/划词翻译,任意位置屏幕取色; (图3.1) WGestures 除了右键可以划手势,也可同时用滚轮中键划手势执行指令; 比如上图3.1中我用滚轮中键手势「右斜下」执行划词搜索,用滚轮中键手势「右斜下+滚轮向下」执行划词划词翻译。 下面讲的屏幕取色功能,我则是用「滚轮中键+滚轮向上」手势执行指令;屏幕取色值是十六进制颜色码,会自动生成拷贝到剪切板; 十六进制颜色码如果用于通达信公式,请将数位12位与56位的数字互换! 以下是屏幕取色 Lua 脚本代码,源码来源于 WGestures 的软件作者! -- 初始化 源码----------------- luanet.load_assembly('System.Windows.Forms'); luanet.load_assembly('System'); luanet.load_assembly('System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'); import('System.Drawing'); import('System.Drawing.Imaging'); import('System.Diagnostics'); Screen = luanet.import_type('System.Windows.Forms.Screen'); -- 执行 源码----------------------- local scrBounds = Screen.PrimaryScreen.Bounds; local bmp = Bitmap(scrBounds.Width,scrBounds.Height,PixelFormat.Format32bppArgb); local g = Graphics.FromImage(bmp); g:CopyFromScreen(scrBounds.X,scrBounds.Y,0,0,scrBounds.Size,CopyPixelOperation.SourceCopy); -- 拷贝到剪贴板 local color = bmp:GetPixel(Context.StartPoint.X, Context.StartPoint.Y); local psi = ProcessStartInfo("cmd", "/K echo " .. ColorTranslator.ToHtml(color) .. "| clip && exit"); psi.CreateNoWindow = true; psi.UseShellExecute = false; Process.Start(psi):Dispose(); -- hack -- cleanup if g then g:Dispose(); end; if bmp then bmp:Dispose(); end; (图3.2) 软件作者说:屏幕取色涉及到好几个API的调用,WGestures 使用的是 NLua 脚本 (//),几乎可以调用任何 .Net 的方法; 四、通达信 to 同花顺,用 WGestures 联动; ( WGestures 虚拟按键 代码参考表) 在通达信里有个功能是标记文字(Ctrl+Q),只要标记里面最前的文字有股名或股码,我们便可以设置鼠标「右键+左键」手势执行自动打开关闭标记并复制标记文本。 鼠标右键+鼠标左键=标记复制,按键序列代码:^q{sleep 300}^a^c%{F4} (图4.1) 「标记复制」再配合「xxxxxx.vbs」便可实现简单的个股联动。通达信里的的标记文件是mark.dat,在文件夹T0002里。mark.dat里面的格式有规律,如果你想要标记全部的个股代码,可以用 Excel 生成所需文本。 上图的通达信联动到同花顺功能并不完美,但如果能直接读取通达信行情内存读取个股代码,就不必多个标记复制步骤。如果能读取同花顺行情内存,就能反过来跟通达信互动。非程序员的我只会编写一点点VBA/VBS且不会API的调用,目前实现不了。WGestures作者写了另一个Lua脚本 稍作修改可以判断Win进程打开通达信或同花顺,但网上NLua教程几乎没有,我还是写不了WGestures里Lua脚本的按键调用。 写此文希望能群策群力,如果你开发出更骚的操作请多多留言或分享! (有时间再开贴讲讲 「通达信标记 + 印象笔记 + WGesture 手势」 这三者组合是如何变成超级复盘利器。通达信里手势指令可以一步直接呼出印象笔记并搜索打开相关个股笔记。在印象笔记里编排固定格式批量复制生成个股笔记页,再将「板块笔记页」与「个股笔记页」软件内互建超链。然后个股复盘记要点再复制到通达信标记里面,就可以达到图中通达信的标记效果) [ 本帖最后由 忆城- 于 2018-5-3 01:15 编辑 ] |
|