Autohotkey单行代码?

时间:2018-01-16 04:30:06

标签: expression autohotkey

我有一个简单的问题,我无法通过搜索互联网找到答案            如何将我的线条划分为一条(单条)线?

例如这是一个工作代码

right:: 
Send, ^s
Reload 
Send, hello world

这不是

right::Send, ^s::Reload::Send, hello world

4 个答案:

答案 0 :(得分:1)

Autohotkey没有像c和javascript中;这样的语句终止符。

但是,如果您的目标是紧凑且可读的代码,则使用函数进行重构可以帮助您实现此目的。

您的代码用一行表示:

right::alpha("^s", "hello world")

alpha(text1, text2) {
  send % text1
  tooltip "reload" will interrupt your script. Any code following "reload" may not execute
  send % text2
}

答案 1 :(得分:1)

在Autohotkey中,您不能将换行符用于单个代码行。

但是如果你想将线条划分为一条(单条)线。

你可以试试这个,

1 - 把它放进一个字符串。

2 - 转换它+将其保存到文件中。

3 - 然后从外部文件运行脚本。

注意 - 我确实制作了脚本,所以你想要它,保存它+?重新加载=运行example1.ahk +发送文本(它不能正常工作,所以你喜欢它,但它几乎是。它是对于我不清楚为什么要重新加载脚本?)

试试这段代码。

example1.ahk

; [+ = Shift] [! = Alt] [^ = Ctrl] [# = Win] 
#SingleInstance force
sleep 100
return

right:: ConvertAndRun("Sendinput, ^s | run example1.ahk | runwait example1.ahk | Send, hello world")
left:: ConvertAndRun("Sendinput, ^s | run example1.ahk | runwait example1.ahk | Send, it works")
~esc::exitapp

ConvertAndRun(y)
{
FileDelete, Runscript.ahk
;1 - Convert the String in single codeline's with return - Character | is the breakline.
StringReplace,y,y, |, `n, all
sleep 150

;2 - Save the String to a file 
x:="#notrayicon `n "
z:="`n "
FileAppend, %x%%y%%z%, Runscript.ahk
sleep 150

;3 - Now it can Run all the commands from that string.
run Runscript.ahk
sleep 150
exitapp
}
;

注意 - 此脚本会将字符串保存到文件(在HardDisk c :)上,但速度不是很快,但是如果您使用Ramdisk,则可以保存并运行文件' s从那里,它将提高速度 - 一个Ramdisk是一个虚拟磁盘(存储在RAM MEMORY z :),比硬盘快+ -100倍。 - 你可以在这里找到这个免费工具(Imdisk

答案 2 :(得分:0)

据我所知,我认为不可能,因为换行符扮演语句分隔符,终止上一个命令/表达式。

来自文档:https://autohotkey.com/docs/Language.htm

  

换行符很有意义:换行符通常充当语句分隔符,终止上一个命令或表达式。   (声明只是该语言中最小的独立元素   表达了一些要执行的行动。)例外情况   是续行

答案 3 :(得分:0)

作为初学者,我可能会使用子程序而不是函数(比如Jim U的答案),不是因为它更好,而是因为我发现它更容易理解。不习惯在ahk中运行。

如果您将以下代码放在脚本的底部(或任何不会打扰您或脚本的地方)......

banana:
Send, ^s
Send, hello world
return

......以下几行就足够了:

right::Gosub, banana