两个脚本快捷键互相模拟触发快捷键的问题

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

fantasyhk
Posts: 20
Joined: 16 Apr 2022, 06:30

两个脚本快捷键互相模拟触发快捷键的问题

Post by fantasyhk » 21 Apr 2022, 07:00

大家好:
请问如何在一个脚本文件里,去模拟发送快捷键,来触发另一个脚本里的快捷键?例如:
脚本1.ahk:

Code: Select all

#k::
msgbox, k pressed!
脚本2.ahk:

Code: Select all

#s::
send,#k
两个脚本同时运行,按下win+s,不会弹出msgbox。想请教如何实现?
因为我想通过修改注册表 ,在桌面右键菜单里添加一个项目,点击这个项目后,希望可以执行脚本1里的某一个功能(不可传参给脚本1让其重新启动)

fantasyhk
Posts: 20
Joined: 16 Apr 2022, 06:30

Re: 两个脚本快捷键互相模拟触发快捷键的问题

Post by fantasyhk » 21 Apr 2022, 08:11

问题解决,英文论坛有朋友提示用sendlevel设置一下事件级别即可。
还有位朋友说:snippet hasn't worked,
有人知道这是另外一种原因吗?还是单纯只是字面意思:代码片段没有起作用?

fwejifjjwk2
Posts: 89
Joined: 10 Aug 2019, 01:49

Re: 两个脚本快捷键互相模拟触发快捷键的问题

Post by fwejifjjwk2 » 21 Apr 2022, 08:14

「桌面右键菜单里添加一个项目,点击这个项目后,希望可以执行脚本1里的某一个功能」這個搜索一下就行了,有現成的設定方法。

你第一個需求在 v1 印象中不會遇到問題,我在 v2 也沒有遇到問題,代碼如下。

Code: Select all

; in a.ah2
#s::send "!#s"
; in b.ah2
!#s::tooltip "test"
除非代碼寫的太混亂,一堆變量名或者函數名衝突,否則建議直接 #Include 其他腳本

fantasyhk
Posts: 20
Joined: 16 Apr 2022, 06:30

Re: 两个脚本快捷键互相模拟触发快捷键的问题

Post by fantasyhk » 21 Apr 2022, 19:06

感谢您这么耐心的解答,说来惭愧,关于桌面右键菜单怎么调用脚本功能,我还是没有搜索到如何实现。如果您方便,可以麻烦您大概说一下原理吗,或者有链接也行 :cry:

fantasyhk
Posts: 20
Joined: 16 Apr 2022, 06:30

Re: 两个脚本快捷键互相模拟触发快捷键的问题

Post by fantasyhk » 21 Apr 2022, 21:34

直接传参调用脚本,相当于会让脚本重新reload一次吧?如果是这样,我的需求是不可以让脚本完全重载,而是直接调用里面的某些功能。请问有人知道如何实现吗?除了调用另外一个脚本,在里面定义一个更高级别的快捷键这种方式以外?

fwejifjjwk2
Posts: 89
Joined: 10 Aug 2019, 01:49

Re: 两个脚本快捷键互相模拟触发快捷键的问题

Post by fwejifjjwk2 » 22 Apr 2022, 05:11

右鍵選單可以搜索「context menu run script」之類的關鍵字
跨腳本利用快捷鍵 A 觸發快捷鍵 B 然後觸發功能在 v1 和 v2 都是 ok 的。
很容易寫一個 demo 證實 include 的腳本裡面的函數被調用的時候並不會 reload 整個腳本,你想要的觸發方式感覺不適合用 include,所以你無需理會。
Last edited by fwejifjjwk2 on 23 Apr 2022, 04:39, edited 6 times in total.

fantasyhk
Posts: 20
Joined: 16 Apr 2022, 06:30

Re: 两个脚本快捷键互相模拟触发快捷键的问题

Post by fantasyhk » 22 Apr 2022, 06:08

首先感谢您的再次指导。
我测试了您的两个脚本,利用#include,在不运行b.ah2的情况下,只打开a.ah2,然后看到tooltip不断的刷,按下win+w,可以知道运行了b.ah2里的test函数。
作为半路起家的业余工作者,很抱歉我还是没太搞明白:我有一个主程序,希望通过桌面右键菜单来触发主程序里的比如某一个函数。那么是否可以理解为这里的b.ah2是主程序,右键菜单打开a.ah2去调用b.ah2里的test函数?如果是这样,在b.ah2运行的前提下,然后打开a.ah2还是会再执行一遍b.ah2里的脚本吧?还是我理解的不对,哪个是主程序,右键菜单调用的是哪个脚本?

fantasyhk
Posts: 20
Joined: 16 Apr 2022, 06:30

Re: 两个脚本快捷键互相模拟触发快捷键的问题

Post by fantasyhk » 22 Apr 2022, 06:13

简单来说,就是我有个常驻运行的主程序,现在希望点击桌面右键菜单自定义项,可以触发主程序里的某个功能,但不会让主程序重新加载。目前我只搞明白可以通过发送更高级别的快捷键来触发主程序里的快捷键脚本。除此之外,还有其他方法吗?您说的#include我还是没理解

Post Reply

Return to “请求帮助”