StrokesPlus.net教程及脚本(官网和论坛已关闭)

一些带标签功能的软件都是的可以的
比如浏览器,WPS办公软件系列,Qttabbar等都
我用以下代码实现了这个功能,可以使用 了

sp.SendControlDown();
sp.SendKeys("{TAB}"); 
sp.Sleep(200);
sp.SendControlUp();

:blush:

不知道是不是因为升级到win11,经常出错,时不时卡死,要关闭后台再重新打开软件。
本来打算找个别的手势软件,但都没这个用的顺手

帖子里的图片失效了

谢谢我更新下

大佬, 又来求助了,我想在’热键’里
把ctrl+D改成
如果是dopus.exe输出ctrl+D
否则就输出Delete

能帮写一段吗

你试试,我没办法测试


var mouseWnd = sp.WindowFromPoint(sp.GetCurrentMousePoint(), true);

var exeName = mouseWnd.Process.MainModule.ModuleName;

if(exeName == "dopus.exe"){        
    sp.SendModifiedVKeys([vk.LCONTROL], [vk.VK_D]);

} else {
    sp.SendVKey(vk.DELETE);

}

报错:
[ScriptEngine.Execute() - ScriptEngineException] ReferenceError: mouseWnd is not defined
at Script [38]:2:15 → var exeName = mouseWnd.Process.MainModule.ModuleName;

再试试

OK了,十分感谢

有个问题和想法提一下,看看能不能实现
手势的基本原理就是检测鼠标滑动的距离来激活相应的设置的
同一个手势目前是直接对应一个结果
能否增加一个距离检测的功能,比如滑动在150以内激活一个配置,大于150激活另一个功能(这个距离可以让用户根据字的屏幕大小和日常的使用习惯来自己配置)
这样就可以大大扩展手势的功能了
或者目前已经有这样的功能了,只是我没有发现
望楼主可以帮忙解答一下
谢谢

没必要判断距离,实际上也会没到距离触发了另一个功能

带弧线的还判断不了距离

有个办法就是在不同区域划手势,比如屏幕上中下左右区域

分别是手势结束位置在屏幕1/8上下左右,斜左右上下角落手势功能

var lt = action.Window.Screen.Bounds.Left;
var rt = action.Window.Screen.Bounds.Right;
var tt = action.Window.Screen.Bounds.Top;
var bt = action.Window.Screen.Bounds.Bottom;
var ht = action.Window.Screen.Bounds.Height;
var wd = action.Window.Screen.Bounds.Width;

//Create rectangles for left, right, top, bottom
//These rectangles can overlap, adjust math to prevent if needed
var leftRect = new Rectangle(lt, tt, parseInt(wd / 8), ht);
var topRect = new Rectangle(lt, tt, wd, parseInt(ht / 8));
var rightRect = new Rectangle(rt - parseInt(wd / 8), tt, parseInt(wd / 8), ht);
var bottomRect = new Rectangle(lt, bt - parseInt(ht /8), wd, parseInt(ht / 8));

//Test location within rectangles
//supports special handling for in the corners, where the rectangles overlap
if(leftRect.Contains(action.End) && topRect.Contains(action.End)) {
    sp.MessageBox("In Upper Left Rectangles", "Upper Left");
}
else if(leftRect.Contains(action.End) && bottomRect.Contains(action.End)) {
    sp.MessageBox("In Lower Left Rectangles", "Lower Left");
}
else if(rightRect.Contains(action.End) && topRect.Contains(action.End)) {
    sp.MessageBox("In Upper Right Rectangles", "Upper Right");
}
else if(rightRect.Contains(action.End) && bottomRect.Contains(action.End)) {
    sp.MessageBox("In Lower Right Rectangles", "Lower Right");
}
else if(leftRect.Contains(action.End)){
    sp.MessageBox("In Left Rectangle", "Left");
}
else if(rightRect.Contains(action.End)){
    sp.MessageBox("In Right Rectangle", "Right");
}
else if(topRect.Contains(action.End)){
    sp.MessageBox("In Top Rectangle", "Top");
}
else if(bottomRect.Contains(action.End)){
    sp.MessageBox("In Bottom Rectangle", "Bottom");
}
else{
    sp.MessageBox("Main Screen Area", "Not Along Edge");
}

不用所有的手势都判定,简单的上下左右,上左,上右,下左,下右8个手势有这个判断就行了

我去软件的论坛主页咨询了,也给我回复了,可以实现
这是作者的回复,贡献给大家
https://forum.strokesplus.net/posts/m13523-Have-a-question-and-an-idea-to-see-if-it-can-be-done-The-basic-principle-of-gestures-is-to-detect-th邮政13523

1 个赞

这个提示文字的显示好像只有这8个位置,没有屏幕中心的的代码吗?
image

130楼的显示手势统计的代码执行错误

去问下rob,新版估计会报错,我还用的旧版

请问可以给手势增加阴影 或者渐变消失的效果吗?

淡入淡出步数

我补充一个类似mouseINC的功能.

定位程序所在位置

作用: 打开当前程序所在路径的文件夹. 并选中该程序.

var s= sp.ForegroundWindow().ExecutablePath;   //获取程序执行路径
s+="\\"+sp.ForegroundWindow().ExecutableName;  //获取程序名称
s=" /select,"+s;    //组合成完整路径
sp.RunProgram("Explorer.exe",s,"","normal",false,false,false)  //打开程序所在位置,并定位

//显示屏幕提示
var info = new DisplayTextInfo();
info.Title = '定位程序位置';
info.TitleAlignment = 'Center';
info.Message = s;
info.MessageAlignment = 'Left';
info.Duration = 2000;
//弹出窗口的透明度,有效范围:0.05  -  1.0(1.0不透明)
info.Opacity = 0.7;
//位置也支持位置,使用此格式指定类型:'100,200'
//类型:topleft,top,topright,right,bottomright,bottom,bottomleft,left
info.Location = 'bottom'; 
info.TitleFont = new Font('Segoe UI', 12, host.flags(FontStyle.Bold));
info.MessageFont = new Font('Segoe UI Semibold', 12);
//info.BackColor = 'black';//'56,169,255'; //也支持 RGBinfo.ForeColor = 'white';
info.Padding = 15;
//如果为true,则始终显示在主屏幕上(除非Location是点类型),
//否则会在手势开始的屏幕上显示
//info.UsePrimaryScreen = true; 
sp.DisplayText(info);

1 个赞

不知道作者有考虑做个类似于quicker的鼠标轮盘功能吗,很多功能没法触发,快捷键不够用等问题,就差个可视化了,quicker又要联网没法用