当年(2010年左右),看了一堆资料,选了aotoit,结果我只需要把左alt健映射为其他一个按键,于是,我搜了半天autoit的资料,就是没搞清楚咋搞。于是换到ahk,一行就搞定了。让我实在对autoit难以入口啊。 后来发现我的需求ahk完全满足了,于是就一直ahk了。
如何借助Autohotkey使total commander在单双窗口间切换?
以下不限于Autohotkey,讨论如何使Tcmd在单双栏窗口之间切换。我使用的tcmd是Total command 飞扬时空定制版,将其中的Total command.exe 替换成了官网下载到的最新版。
#绕弯经历1# 当我需要将Tcmd窗口尽可能宽时,我将Tcmd更改为上下平铺的窗口,并将中间的分隔条拖到最下方去。
#绕弯经历2# 当我需要将Tcmd窗口与其他软件的窗口(左右)并列在视窗之中时,我先用Win+向左或向右的方向键,将Tcmd占用半屏,将其他软件再用Win+向右或向左的方向键再占用半屏。其中为了Tcmd中查看的方便,见#绕弯经历1#。(另:上下并列)
为什么Tcmd能够做成双栏窗口,却偏偏不能只使用单栏窗口呢?
原来,Tcmd是能够做成单栏窗口的。
#方案1# 添加三个工具按钮。
调用菜单功能Alt+OB(配置-工具栏),添加三个按钮到工具栏:
单栏按钮(即隐藏不活动栏)cm_100Percent、
平分双栏按钮 cm_50Percent、
切换横纵分栏按钮 cm_VerticalPanels




#方案2# 手工新增一个快键,记熟三个快键。
调用菜单功能Alt+OO+“其他”(即配置-选项-其他),来设置快捷键:单栏按钮(即隐藏不活动栏)快键,建议按下图,设置成 AS+8,即Alt+Shift+8.
注意,以下两个快键可能已经被设置:{ 平分双栏快键 Alt+8:A+8=cm_50Percent; 切换横纵分栏快键 Alt+9:A+9=cm_VerticalPanels 详见以下方案3中的明文说明 }
于是,Alt+8与AltS+8之间互相转换,Alt+9与Alt+9自身相互切换。

#方案2-2# 直接写配置文件来新增一个快键同时记熟三个快键。
调用菜单功能Alt+OC(配置-直接修改配文件),直接在配置文件WinCMD.ini中写入快键设置(下图添加在[Shortcut]字段末尾):
设置单栏按钮(即隐藏不活动栏)快键 为 Alt+Shift+8,在[Shortcut]字段中添入下行:
AS+8=cm_100Percent
如下图:

- 注:这里没有使用A+F11。
- 注意,F11用于文件同步指令:
- F11=cm_FileSync
- 另外注意,以下两个快键可能已经被设置:{
- 平分双栏快键 Alt+8:
- A+8=cm_50Percent
- 切换横纵分栏快键 Alt+9:
- A+9=cm_VerticalPanels
- }
#方案3# 待研究深挖Tcmd的内在功能。
挖掘Tcmd的内在功能,使 A+8 这个快键能够在 cm_100Percent与cm_50Percent这两个指令之间切换,而不必启用AS+8这个额外增加的快键。
#方案4# 使用TCmd的wcx型脚本插件之一:autorun。
待学习。
参见:
如何借助Autohotkey使total commander在单双窗口间切换? - Momo Huruka的回答 - 知乎 https://www.zhihu.com/question//answer/
如何借助Autohotkey使total commander在单双窗口间切换? - 钟德宁的回答 - 知乎 https://www.zhihu.com/question//answer/
关于CDFL各类插件:
第1类 压缩插件 (WCX),第2类 内容插件 (WDX),第3类 文件系统插件 (WFX),第4类 查看程序插件 (WLX)
Total Commander 有哪些“高性价比”的功能和插件?
Total Commander 有哪些“高性价比”的功能和插件?
#方案5#: 使用 AutoHotKey。
使用 AutoHotKey (AHK或ahk,https://www.autohotkey.com/ ) ,一个快键办妥。待学习。
参见:
如何借助Autohotkey使total commander在单双窗口间切换? - yahuu的回答 - 知乎 https://www.zhihu.com/question//answer/
如何借助Autohotkey使total commander在单双窗口间切换? - VimWei的回答 - 知乎 https://www.zhihu.com/question//answer/
还有类似工具,待检验:
按键精灵 ( http://www.anjian.com/intro.htm = 按键精灵软件介绍_办公/游戏脚本制作软件-按键精灵官方网站 )
冰狐智能辅助 ( https://www.aznfz.com/ )
梓羽文谲:优秀!Python版按键精灵,电脑鼠标、键盘手势动作一键复制操作,优雅极了!
AutoHotkey v2.0 与 FindText 9.9
是兼容的。
下面是基础的找图代码:
#Requires AutoHotkey v2.0 #Include E:\tool\AdventureCN - v5.7.0\Tools\Findtext\FindText.ahk ; 替换成 FindText 9.9 的路径 t1:=A_TickCount, Text:=X:=Y:="" Text:="|<>*191$20.0zk0zz0Q0sC0773stVz6kzlw6wT0DDk7mw1sj0w3kD1w3URUw6QD3XVVkT1s3zw0Dw2" F8::{ if (ok:=FindText(&X, &Y, 871-, 70-, 871+, 70+, 0, 0, Text)) { FindText().Click(X, Y, "L") } ; ok:=FindText(&X:="wait", &Y:=3, 0,0,0,0,0,0,Text) ; 等待3秒等图像出现 ; ok:=FindText(&X:="wait0", &Y:=-1, 0,0,0,0,0,0,Text) ; 无限等待等图像消失 MsgBox "找到:`t" (IsObject(ok)?ok.Length:ok) . "`n`n时间:`t" (A_TickCount-t1) " 毫秒" . "`n`n位置:`t" X ", " Y . "`n`n结果:`t<" (IsObject(ok)?ok[1].id:"") ">", "Tip", 4096 Try For i,v in ok ; ok 值可以这样获取 ok:=FindText().ok if (i<=2) FindText().MouseTip(ok[i].x, ok[i].y) }
#SingleInstance force
跳过对话框, 自动替换旧实例.
SetKeyDelay 0
-1 表示无延时, 或 0 表示最小延时
SetKeyDelay Delay, PressDuration, "Play" Delay 控制按键之间的延时,适用于控制按键的速度。 PressDuration 控制按键按下的持续时间,适用于需要每次按键都按住一段时间的情况。 Play 模式 是为了特殊应用程序或游戏提供的一种低级别的输入方式。
SetKeyDelay(100) ; 设置每次按键之间的延时为100毫秒,保持默认的按下持续时间 SendEvent("Hello") ; 发送 "Hello",每个字母之间有100毫秒的延时
SetKeyDelay(100, 50) ; 设置每次按键之间的延时为100毫秒,每次按键按下50毫秒后才松开 SendEvent("Hello") ; 发送 "Hello",每个字母之间有100毫秒的延时,每个按键按下持续50毫秒
SetKeyDelay(0, 0, "Play") ; 使用 Play 模式,无延时,最快速度发送按键 SendEvent("{Space}") ; 快速发送空格键
SetKeyDelay(-1) ; 无延时 SendEvent("Hello") ; 立即发送 "Hello",没有任何延时
为了实现更加自然的拖拽效果,你可以通过绘制拖拽轨迹,使鼠标在起点和终点之间沿着曲线或其他形状移动。通过这种方式,拖拽动作会显得更加自然,而不是简单的直线移动。以下是一个利用贝塞尔曲线生成拖拽轨迹的代码示例,来模拟更流畅的拖拽动作。
#SingleInstance force CoordMode("Mouse", "Screen") #Include FindText.ahk ; 定义一个全局变量来控制循环 global isRunning := false ; 获取屏幕宽度和高度 ScreenWidth := A_ScreenWidth ScreenHeight := A_ScreenHeight BezierCurve(x1, y1, x2, y2, controlX, controlY, steps := 100) { points := [] Loop steps { t := A_Index / steps invT := 1 - t ; 贝塞尔曲线方程 Bx := invT * invT * x1 + 2 * invT * t * controlX + t * t * x2 By := invT * invT * y1 + 2 * invT * t * controlY + t * t * y2 points.Push({x: Bx, y: By}) } return points } ; 模拟拖拽操作,沿着贝塞尔曲线轨迹移动鼠标 MouseDragWithCurve(StartX, StartY, EndX, EndY) { ; 控制点决定曲线的形状,通常在起点和终点之间的某个位置 ControlX := (StartX + EndX) / 2 + 100 ; 控制点的 X 坐标,调节控制点位置可以影响曲线 ControlY := (StartY + EndY) / 2 - 100 ; 控制点的 Y 坐标 ; 生成从起点到终点的贝塞尔曲线 points := BezierCurve(StartX, StartY, EndX, EndY, ControlX, ControlY) ; 移动到起点并按下左键 MouseMove(StartX, StartY) Sleep(200) MouseClick("left",,,,, "D") Sleep(200) ; 沿着曲线移动鼠标,模拟拖拽 for _, point in points { MouseMove(point.x, point.y, 0) ; 每次移动到曲线上一个点 Sleep(10) ; 调整移动速度 } ; 松开左键 Sleep(200) MouseClick("left",,,,, "U") } ; 当按下 F8 键时,开始锁屏与取消锁屏的循环 F8:: { isRunning := true ; 循环直到按下 F9 键停止 while (isRunning) { Sleep(3000) Text:="|<>0.90$0/0/524F5D,-1/5/,27/6/40363A,40/0/30202E,21/-5/FFE5DE" if (ok := FindText(&X:= "wait", &Y:= 3, 0, 0, ScreenWidth, ScreenHeight, 0, 0, Text)) { MouseDragWithCurve(X, Y,1039, 502) } } } ; 当按下 F9 键时,停止循环 F9:: { isRunning := false ; 在停止循环时结束脚本的当前操作 Reload }
问题描述:
需要修改.ahk文件,选中右键(win11要点显示更多选项)点击Edit Script。编辑完保存弹窗提示需要管理员权限,遂放弃修改。
解决方法:在别的文件夹创建编辑,然后放到startup文件夹。
在别的文件夹(不要在系统文件夹)新建一个文本文档,把之前.ahk文件里的内容复制到这个文本文件里面并进行修改,修改完另存为命名为name.ahk
,并选择编码UTF-8 BOM
。

然后将这个name.ahk粘贴到开机文件夹中:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
然后去任务栏,把之前的那个旧的ahk退出(Exit),然后再双击这个开机文件夹中的新的ahk文件,就可以正常使用啦~
调试日志,很多都不好用自己写调试函数
log(message) { OutputDebug message ; 输出到调试控制台 } logMultiple(params*) { message := "" for index, value in params { message .= value . (index < params.Length ? ", " : "") ; 使用 Count() 获取长度 } log(message) ; 调用 log 函数输出 }
然后调用
logMultiple(X1,Y1, Width, Height)
输出结果

简单记录一下,以后可能会用到
class MyBuffer extends Buffer { BufSize { get => this.Size } } b := Buffer(5, 0) ; MsgBox(b.BufSize) ; error b.Base := MyBuffer.Prototype MsgBox(b.BufSize) ; ok 5
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-yfwjc/53108.html