Shell Exec StdOut到现有控制台

时间:2015-03-05 03:46:53

标签: console autohotkey wsh

所以我知道如何使用wscript启动控制台,发送和读取它,

但是在现有的控制台窗口中这样做呢?

我将这些功能分开,因为我可以出于其他原因单独使用它们)

如何从我之前创建的控制台发送和接收线路?

Startconsole:
    LaunchConsole(showconsole)  ;display console based on user settings
    DllCall("AttachConsole", "UInt", conWinPID)
return

LaunchConsole(hideconsole=0){
    global
    if(hideconsole){
        hideconsole := "hide"
    }
    Run %ComSpec% /K cd /D c:\test, c:\test, %hideconsole%, conWinPID
    winwait, ahk_pid %conWinPID%
    winsettitle, ahk_pid %conWinPID%,,My Console Title
}

ConsoleCommand(whatcommand){
    global myEdit
    oExec := ComObjCreate("WScript.Shell").Exec(whatcommand)
    While, !oExec.StdOut.AtEndOfStream
        result := oExec.StdOut.ReadAll()
        guicontrol,, myEdit, %result%
    Return, result
}

CloseConsole:
    DllCall("FreeConsole")
    winclose, ahk_pid %conWinPID%   
return

所以我想这样做:

gosub, StartConsole
ConsoleCommand("ping google.com -n 1")
ConsoleCommand("ping somewhereelse.com -n 1")
gosub, CloseConsole

控制台中的行应显示在我在LaunchConsole中创建的编辑控件和控制台中,而不是我在wscripting中创建的那一行。我需要让wscript与我的控制台一起工作。

[更新]

我认为它实际上可能使用该控制台 - 只是我通过wscript发送的命令不会显示在控制台中,而且我在控制台中键入的任何内容都不会被反馈到脚本。

0 个答案:

没有答案