当前位置:网站首页 > 云服务教程 > 正文

autohotkey教程(autohotkey中文教程下载)



当年(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,autohotkey.com/ ) ,一个快键办妥。待学习。

参见:

如何借助Autohotkey使total commander在单双窗口间切换? - yahuu的回答 - 知乎 https://www.zhihu.com/question//answer/

如何借助Autohotkey使total commander在单双窗口间切换? - VimWei的回答 - 知乎 https://www.zhihu.com/question//answer/

还有类似工具,待检验:

按键精灵 ( anjian.com/intro.htm = 按键精灵软件介绍_办公/游戏脚本制作软件-按键精灵官方网站 )

冰狐智能辅助 ( 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

到此这篇autohotkey教程(autohotkey中文教程下载)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • MSVCP140.dll下载(msvcp140.dll下载教程)2025-07-21 08:27:08
  • ad20软件使用教程安装(ad20使用教程下载)2025-07-21 08:27:08
  • ewm系统的不足(ewm系统操作教程)2025-07-21 08:27:08
  • vga显卡驱动怎么安装(vga显卡驱动怎么安装教程)2025-07-21 08:27:08
  • mac装双系统win10详细教程(mac装双系统win10详细教程(图解))2025-07-21 08:27:08
  • 程序员代码教程(程序员专用代码)2025-07-21 08:27:08
  • cmake教程详解(cmake使用教程)2025-07-21 08:27:08
  • xmouse官网(xmouse设置教程)2025-07-21 08:27:08
  • 2258xt开卡详细教程(2259xt开卡教程)2025-07-21 08:27:08
  • ad19铺铜教程(ad18铺铜教程)2025-07-21 08:27:08
  • 全屏图片