dog
(荒废千年)
1
缘起
@Kuma 同学热衷于想要搞个quicker平替, 近日打算开发Quicker平替软件,并加我微信让帮忙尝试一个claunch版本的quicker平替。
刚好我也有类似需求,因为quicker经常和我的ahk小工具冲突,但是quicker这样根据软件不同显示不同面板的功能又挺好用的。
简介
在claunch原本基础上,增强了以下功能:
- 根据不同窗口显示不同面板。
- 快速添加ahk脚本。
- 快速更换图标。
- 去除了claunch对于窗口激活的影响,实现了文本编辑等操作。
- 悬浮按钮功能。
使用说明
1. 下载、解压,运行claunahk.ahk,而不是claunch.exe。
2. 三重触发键
默认快捷键为xbutton1。
- 单击xbutton1==非锁定模式打开根据进程的面板,点击按钮后消失。
- 长按xbutton1==锁定模式打开根据进程的面板,适合连续使用。
- 双击xbutton1==以非锁定模式打开通用面板。
3. 创建进程面板
很简单,只需要将该面板命名为对应进程的exe名、"c "+class名 或"t "+ title名即可。
更复杂的窗口匹配规则(如正则匹配、group匹配等)可以自行修改claunahk.ahk添加特例。
这些信息可通过autohotkey的widowspy快捷获得。
4. 快速添加ahk脚本
按下快捷键win+n(new),打开ahk脚本默认存放文件夹、以及锁定模式打开根据进程的面板,方便快速新建脚本并拖到面板。
5. 快速更换图标(仅对 非 长按xbutton1触发的面板起效)
通过snipaste截图到剪贴板后,右键双击目标按钮,此时ico图标地址已放置在剪贴板,粘贴到文件名编辑框处即可。
另外,子文件夹"png转ico手动"中还有一个方便手动将网络下载的png图标转换成ico的工具,可以配合使用。
6. 悬浮按钮(仅对 非 长按xbutton1触发的面板起效)
将鼠标移动到目标按钮,然后按下快捷键win+f(float),即可生成一个悬浮按钮,可以随意拖动使用。悬浮按钮没有数量限制。
。
! 注意:后两个功能对于长按xbutton触发的面板(exe名为clahk.exe)不起效
这是因为,为了便于连续点击按钮时,不影响窗口激活状态,长按触发的面板进行了特殊处理,所以按键无法发送到clahk窗口上面。
下图示例连续点击按钮操作:
下载地址
链接: https://pan.baidu.com/s/125d5jpEFjQ4mR_c_IWvpRw?pwd=pntp 提取码: pntp 复制这段内容后打开百度网盘手机App,操作更方便哦
edit:12.10
更新了一个新版本的悬浮按钮,支持右键单击后锁定/解锁 对当前激活窗口的吸附。
吸附后,主窗口和按钮同步移动、同步最小化。
关闭主窗口,按钮自动关闭。
关闭按钮,不影响主窗口。
该地址==>dogbean.ysepan.com 下载悬浮按钮.exe,替换claunahk文件夹下原本的悬浮按钮.exe即可。
对于小白用户
推荐两款ahk傻瓜式创建器,
- GitHub - Pulover/PuloversMacroCreator: Automation Utility - Recorder & Script Generator
- GitHub - papple23g/ahkcompiler: AutoHotKey 語法產生器(線上網站)
打赏及代码定制
ahk代码定制:咸鱼搜索用户 豆子哆嗦
26 个赞
zhongx
(zhongx)
2
这个悬浮按钮可以根据切换程序实现 自动显示隐藏吗?
Kuma
(IFwz1729)
7
老哥,太神了,这个皮肤跟quicker面板好像,图标位置大小想弄多大弄多大,卸载quciker!
个人还是习惯使用右键长按触发窗口(并且公司鼠标没有侧键 ),研究半天勉强实现了……编辑了一万遍帖子,感谢GPT4
Kuma
(IFwz1729)
11
【脚本分享】WPS 首行缩进
SendInput,{Alt}
sendinput,o
SendInput,p
sendinput,{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}{Tab}
SendInput,{2}{enter}
return
1 个赞
Kuma
(IFwz1729)
12
公文格式脚本,平替小恐龙公文排版插件
代码来自 ahk设置WPS办公自动化热键脚本(word/excel类似) - AutoHotkey Community
设置大标题
word := ComObjActive("kwps.Application")
if word.selection.type =1 ;当前Word中未选择具体内容,为光标闪烁状态
{
word.Selection.MoveRight ;向右移动1格光标
word.Selection.MoveUp(unit := 4) ;移动光标到段首
word.Selection.MoveDown(unit := 4,,1) ;选中光标到段尾的内容
}
word.Selection.ClearFormatting ;清除格式
word.Selection.Range.HighlightColorIndex := 0 ;背景色突出显示,不能通过清除格式去掉(注意不是底纹)
word.Selection.ParagraphFormat.CharacterUnitLeftIndent := 0 ;左缩进、右缩进、首行缩进(注意:必须中文设置在前,英文设置在后)
word.Selection.ParagraphFormat.CharacterUnitRightIndent := 0
word.Selection.ParagraphFormat.CharacterUnitFirstLineIndent := 0
word.Selection.ParagraphFormat.LeftIndent := 0
word.Selection.ParagraphFormat.RightIndent := 0
word.Selection.ParagraphFormat.FirstLineIndent := 0
word.Selection.Font.Name := "方正小标宋简体"
word.Selection.Font.Size := 22 ;二号
word.Selection.ParagraphFormat.Alignment := 1 ;0左对齐,1居中,2右对齐,3两端对齐,4分散对齐
word.Selection.ParagraphFormat.LineSpacingRule := 4 ;行距规则,单倍行距多倍行距等,依据菜单项从0到5
word.Selection.ParagraphFormat.LineSpacing := 28 ;行距具体值
MouseMove, 2, 2 , , R
word :=""
Return
设置正文
word := ComObjActive("kwps.Application")
word.Selection.ClearFormatting ;清除格式
word.Selection.Range.HighlightColorIndex := 0 ;背景色突出显示,不能通过清除格式去掉(注意不是底纹)
word.Selection.ParagraphFormat.CharacterUnitLeftIndent := 0 ;左缩进、右缩进、首行缩进(注意:必须中文设置在前,英文设置在后)
word.Selection.ParagraphFormat.CharacterUnitRightIndent := 0
word.Selection.ParagraphFormat.CharacterUnitFirstLineIndent := 2
word.Selection.ParagraphFormat.LeftIndent := 0
word.Selection.ParagraphFormat.RightIndent := 0
word.Selection.ParagraphFormat.FirstLineIndent := 0
word.Selection.Font.Name := "仿宋_GB2312"
word.Selection.Font.Size := 16 ;三号
word.Selection.ParagraphFormat.LineSpacingRule := 4 ;行距规则,单倍行距多倍行距等,依据菜单项从0到5
word.Selection.ParagraphFormat.LineSpacing := 28 ;行距具体值
MouseMove, 2, 2 , , R
word :=""
Return
2 个赞
Kuma
(IFwz1729)
13
WPS的表格,新建标签页,命名为et
合并单元格居中
SendInput,{Alt}
sendinput,h
SendInput,m
sendinput,c
return
设置单元格底色
ket := ComObjActive("Ket.Application")
if OnOff := !OnOff
{
ket.Selection.Interior.Colorindex := 6
}
else
{
ket.Selection.Interior.Colorindex := 0
}
ket :=""
return
zhongx
(zhongx)
16
;---- 在网页中搜索选中文字 ------
{
Send, ^c
Sleep 50
Run, https://www.bing.com/search?q=%clipboard%
;Run, https://www.baidu.com/s?wd=%clipboard%
;Run, http://www.google.com/search?q=%clipboard%
Return
}
Kuma
(IFwz1729)
17
【C#脚本】数字转金额大写
引擎与脚本下载
用法:将 csws.exe 数字转大写金额.cs
注册到面板
视频演示
脚本代码
using System;
using System.Windows.Forms;
public class Script
{
static public void Main()
{
string t=Clipboard.GetText();
decimal num=decimal.Parse(t);
// MessageBox.Show(CmycurD(num));
//SendKeys.Send(CmycurD(num));
Clipboard.SetText(CmycurD(num));
}
/// <summary>
/// 转换人民币大小金额
/// </summary>
/// <param name="num">金额</param>
/// <returns>返回大写形式</returns>
static public string CmycurD(decimal num)
{
string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
string str3 = ""; //从原num值中取出的值
string str4 = ""; //数字的字符串形式
string str5 = ""; //人民币大写金额形式
int i; //循环变量
int j; //num的值乘以100的字符串长度
string ch1 = ""; //数字的汉语读法
string ch2 = ""; //数字位的汉字读法
int nzero = 0; //用来计算连续的零值是几个
int temp; //从原num值中取出的值
num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
j = str4.Length; //找出最高位
if (j > 15) { return "溢出"; }
str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
//循环取出每一位需要转换的值
for (i = 0; i < j; i++)
{
str3 = str4.Substring(i, 1); //取出需转换的某一位的值
temp = Convert.ToInt32(str3); //转换为数字
if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
{
//当所取位数不为元、万、亿、万亿上的数字时
if (str3 == "0")
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
}
}
else
{
//该位是万亿,亿,万,元位等关键位
if (str3 != "0" && nzero != 0)
{
ch1 = "零" + str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 != "0" && nzero == 0)
{
ch1 = str1.Substring(temp * 1, 1);
ch2 = str2.Substring(i, 1);
nzero = 0;
}
else
{
if (str3 == "0" && nzero >= 3)
{
ch1 = "";
ch2 = "";
nzero = nzero + 1;
}
else
{
if (j >= 11)
{
ch1 = "";
nzero = nzero + 1;
}
else
{
ch1 = "";
ch2 = str2.Substring(i, 1);
nzero = nzero + 1;
}
}
}
}
}
if (i == (j - 11) || i == (j - 3))
{
//如果该位是亿位或元位,则必须写上
ch2 = str2.Substring(i, 1);
}
str5 = str5 + ch1 + ch2;
if (i == j - 1 && str3 == "0")
{
//最后一位(分)为0时,加上“整”
str5 = str5 + '整';
}
}
if (num == 0)
{
str5 = "零元整";
}
return str5;
}
}
dog
(荒废千年)
19
没办法,不是直接运行代码,通过启动器比quicker中间多了好几步
不过大部分自动化动作不差这点延迟
需要低延迟的还是用快捷键比较快,鼠标移动点击本来就得个一秒多了
zhongx
(zhongx)
21
请问下,如何让代码仅在指定的窗口运行?
网上找的:
#IfWinActive ahk_exe msedge.exe
Send, ^+i
Return
#IfWinActive
没有效果,在其它窗口同样可以运行成功。
感谢楼下解决:
;---- 在指定的软件窗口中运行快捷键 ------
If WinActive("ahk_exe msedge.exe")
Send, ^+i