我不断尝试在 AHK 中运行快速测试。必须想出一个新的热键、写入所有环境变量、保存、构建等,这是一件很痛苦的事情。我希望能够输入一个简短的测试,按 Enter 键,并从 AHK 获得一些反馈。
例如:我会在 AHK 控制台中输入
Run, Notepad
,按 Enter 键,记事本打开,控制台中会显示一些反馈。然后我可以返回,尝试选项,按 Enter 等。所以它看起来像这样:
> Run, Notepad
Running Notepad.exe
Activating Window Untitled - Notepad, ahk_class Notepad, ahk_id ...
Window Active
> Run, NotARealThing
Error: Could not find 'NotARealThing'
>
GirlGamer
的“快速运行脚本的脚本”但是...
Run, TempScript.ahk
处收到错误,因为系统找不到它,即使 FileAppend
应该创建一个新文件(如果它不存在)。^!W
) 非常接近我正在寻找的东西。但是,我想按 Enter 并让它运行,然后 Shift+Enter 转到下一行... AutoHotkey 控制台日志/WriteLine 等效项。
最初我认为这是解决方案,但它说“如果你从控制台运行这个......”什么控制台?
此外,它声称你可以做类似
> AutoHotKey test.ahk
的事情,但我发现这样做有一些问题:AutoHotKey
识别为命令。 我确信这意味着我只需要将 AutoHotKey.exe 的路径添加到我的 PATH 变量中即可。SCiTE4AHK但是我没有看到任何“控制台”的东西...
Hachi
对“调试的最佳方法?”的回答
“所以从控制台运行
或myscript.ahk >log.txt
”myscript.ahk |more
还有一堆谷歌搜索结果。但似乎一切都指的是控制台,而不是如何实际访问控制台。 我错过了什么?
Ahk 并不是这样工作的,开箱即用。他们所指的控制台是 Windows 命令控制台。现在这么说:
看看这个:https://github.com/G33kDude/Console 这是:https://autohotkey.com/boards/viewtopic.php?f=6&t=6113
对于 CodeQuickTester,复制代码(在此处找到),将其放入新的
.ahk
文件中,然后构建它以启动 AHK 控制台。它没有您想要的 Enter 功能,但如果您愿意,您可以轻松设置。
您还可以设置脚本来启动控制台,如下所示:
; win+c launches the AutoHotKey Console
#c::
Run, AHK_Console.ahk, C:\path\to\ahk\scripts
Return
我的第一次尝试是创建一个 IE 窗口,并将消息推送到 HTML 正文中。它工作得不太好,滚动是不可能的,我尝试过从下到上连接..并且存在窗口激活问题,以及时机..所以它不太好。
还有第二种解决方法,因为 AHK 没有控制台,单击托盘上的图标并检查流程,这不是您想要的。 这个想法是:通过网络服务向控制台发送消息。
有webservice的代码,nodejsconsole.js,它需要nodeJS和几个npm包。
var express = require('express');
var app = express();
var colors = require('colors');
const strftime = require('strftime');
var port = 3003;
var ip = '127.0.0.1';
app.listen(port, ip, function() {
});
app.post('*', function( req, res ){
var bodyStr = '';
req.on("data",function(chunk){
bodyStr += chunk.toString();
});
req.on("end",function(){
msg="";
switch( bodyStr.substr(0,1) )
{
case String.fromCharCode(7) :
tmp=bodyStr.split(String.fromCharCode(7));
for(i=1;i<tmp.length;i=i+2){
msg=msg+" "+tmp[i][tmp[i+1]];
}
break;
case '[' :
case '{' :
msg=JSON.parse(bodyStr);
break;
default:
msg=bodyStr;
break;
}
console.log(strftime('%T.%L').cyan,msg);
res.json({"OK":200});
});
});
这将获取字符串并将其显示在控制台窗口中。它很好地显示了字符串化的有效 JSON 和字符串,您可以使用 chr(7) 开头和分隔的字符串对消息进行着色。
ahk函数jsconsole.ahk是搜索控制台窗口,如果不存在,则运行它,如果存在,则显示消息。我刚刚把它放入我的 ahk lib 中。
jsconsole( msg )
{
try {
global req
if(!req)
{
req:= ComObjCreate("WinHttp.Winhttprequest.5.1")
req.open("POST","http://localhost:3003/")
req.setRequestHeader("Accept", "application/json")
}
req.send( msg )
; req.close()
} catch e {
if( instr( e.message, "0x80072EFD" )) ;maybe your errorcode is different, handle it well here
{
Run, % "node """ A_scriptdir "\nodejsconsole.js""", % A_scriptdir
WinWaitActive, c:\progra~1\nodejs\node.exe
WinActivate, c:\progra~1\nodejs\node.exe
WinMove, c:\progra~1\nodejs\node.exe, , A_ScreenWidth, 0, A_ScreenWidth/3, A_ScreenHeight-80 ; I have 2 screens, this positions it to the second one left side
req.send( msg )
} else
msgbox % e.message
}
}
通过运行这个example.ahk来测试它们:
jsconsole( A_now " indult a log" )
jsconsole( "{""key"":{""kiy"":{""kuy"":3}}}" )
jsconsole( "[""hátezegykey"",2,4,3.12]" )
jsconsole( chr(7) "chartestíéáőúüóö" chr(7) "cyan" chr(7) "10" chr(7) "magenta" )