如何获得 AHK 控制台?

问题描述 投票:0回答:3

我不断尝试在 AHK 中运行快速测试。必须想出一个新的热键、写入所有环境变量、保存、构建等,这是一件很痛苦的事情。我希望能够输入一个简短的测试,按 Enter 键,并从 AHK 获得一些反馈。

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'
> 

我尝试过的事情

  1. GirlGamer
    的“快速运行脚本的脚本”但是...

    • 我在
      Run, TempScript.ahk
      处收到错误,因为系统找不到它,即使
      FileAppend
      应该创建一个新文件(如果它不存在)。
    • 话虽如此,GUI (
      ^!W
      ) 非常接近我正在寻找的东西。但是,我想按 Enter 并让它运行,然后 Shift+Enter 转到下一行...
    • 窗口中也没有任何反馈。很高兴看到 AHK 在处理我的快速测试时所做的一切。
  2. AutoHotkey 控制台日志/WriteLine 等效项

    • 最初我认为这是解决方案,但它说“如果你从控制台运行这个......”什么控制台?

    • 此外,它声称你可以做类似

      > AutoHotKey test.ahk
      的事情,但我发现这样做有一些问题:

    • 我的系统无法将
      AutoHotKey
      识别为命令。 我确信这意味着我只需要将 AutoHotKey.exe 的路径添加到我的 PATH 变量中即可。
    • 这只允许我运行保存的文件吗? 如果是这样,那就违背了使用控制台来运行快速测试的目的。
    • “AutoHotKey”不是我每次运行快速测试时都想输入的内容。 我更愿意从 SCiTE4AHK 运行控制台并在那里进行快速测试。
  3. SCiTE4AHK但是我没有看到任何“控制台”的东西...

  4. Hachi
    对“调试的最佳方法?”的回答

    • “所以从控制台运行

      myscript.ahk >log.txt
      myscript.ahk |more

    • 这是指实际的 AHK 控制台,还是他的脚本会创建一个类似控制台的实体?
  5. 还有一堆谷歌搜索结果。但似乎一切都指的是控制台,而不是如何实际访问控制台。 我错过了什么?

autohotkey
3个回答
7
投票

Ahk 并不是这样工作的,开箱即用。他们所指的控制台是 Windows 命令控制台。现在这么说:

看看这个:https://github.com/G33kDude/Console 这是:https://autohotkey.com/boards/viewtopic.php?f=6&t=6113


0
投票

对于 CodeQuickTester,复制代码(在此处找到),将其放入新的

.ahk
文件中,然后构建它以启动 AHK 控制台。它没有您想要的 Enter 功能,但如果您愿意,您可以轻松设置。

您还可以设置脚本来启动控制台,如下所示:

; win+c launches the AutoHotKey Console
#c::
    Run, AHK_Console.ahk, C:\path\to\ahk\scripts
Return

0
投票

我的第一次尝试是创建一个 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" )
© www.soinside.com 2019 - 2024. All rights reserved.