我想向HTerm发送击键并通过记事本对其进行协议 对所有发送进行硬编码可以正常工作,但是一旦我使用数组和循环对其进行尝试,就没有任何效果(甚至不激活窗口)
我已经尝试了以下代码对Light%A_index%,%Light%A_index%,%LightA_index%,Light [A_index]等的所有组合。
Initialization_Loading_1:
Light := ["F0281", "F0282", "F0283", "F0284", "F0285", "F0286", "F0287", "F0288"] ; Define Array
Return
^2::
Loop % Light.Lenght() ; Send Array to HTerm and Protocol with notepad via Loop
{
IfWinExist, HTerm 0.8.1beta
WinActivate ;
Sender := Light%A_index%
Send, %Sender%
Send, {Enter}
Sleep, 100
IfWinExist, Protokoll.txt - Notepad
WinActivate ;
Send, %Sender%
Send, {Enter}
Sleep, 5000
}
Return
预期结果应该是在Hterm中键入命令,然后在记事本中键入任何内容,因为它甚至没有启动循环。
答案 0 :(得分:1)
我使用了部分代码进行测试(如下所示)。
将数组元素(“ Light”)保存到变量(“ Sender”)的正确方法如下Sender := Light[A_Index]
。
您的循环中还有一个错字;它应该是Loop , % Light.Length()
(添加的逗号是可选的,但出于一致性考虑,我喜欢它)。我相信错别字可能是您什么都没发生的原因。
(这不是问题,但是可以使您的代码更简洁。)还有其他使用数据的方法。一种选择是直接发送数组元素,例如Send , % Light[A_Index]
。另一个选择可能是使用for循环。这是一个基于您的代码的示例:
^3::
Light := ["F0281", "F0282", "F0283", "F0284", "F0285", "F0286", "F0287", "F0288"] ; Define Array
For x In Light
{
Send , % Light[x] . "{enter}"
Sleep , 100
}
Return
用于测试的代码(有效):
^2::
Light := ["F0281", "F0282", "F0283", "F0284", "F0285", "F0286", "F0287", "F0288"] ; Define Array
Loop , % Light.Length() ; Send Array to HTerm and Protocol with notepad via Loop
{
Sender := Light[A_Index]
Send , %Sender%
Send , {Enter}
Sleep , 100
}
Return