Jump to content

Output to a console application


Recommended Posts

I am trying to send commands to a console application.

The AutoIt Window Info gives the window title (Octave)and the the window class (ConsoleWindowClass).

I tried

WinActivate('Octave')

ConsoleWrite ( 'data' )

That moved the window to the forground but the string 'data' did not appear in the console.

Is there a way to accomplish this?

Link to comment
Share on other sites

I think StdinWrite may help you! Search in help file for an example.

BR,

UEZ

I tried

#include <Constants.au3>
$ProcessID = Run('C:\Octave\3.2.4_gcc-4.4.0\bin\Octave.exe', '', @SW_MAXIMIZE)
sleep(40000)
$Handle = WinActivate('C:\Octave\3.2.4_gcc-4.4.0\bin\Octave.exe')
StdinWrite($ProcessID, "rat" & @CRLF)

Unfortunately no luck.

Link to comment
Share on other sites

Have a look at Log ConsoleWrite output in Scite in my sig.

Let me know if you have any questions.

Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic]

Link to comment
Share on other sites

Have a look at Log ConsoleWrite output in Scite in my sig.

Let me know if you have any questions.

I took a look at your scripts. I can get them to work but all of my attempts to send strings to the application I am trying to interact with (Octave) have failed. Octave in a math application compiled with the MinGW compiler. I have no ability to modify it at all.

I am not sure what else I can try.

I aprecaite you taking a stab at it though.

Take

Link to comment
Share on other sites

Is Octave looking at the stdout? What is the code within Octave that receives the message?

Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic]

Link to comment
Share on other sites

I am trying to send commands to a console application.

The AutoIt Window Info gives the window title (Octave)and the the window class (ConsoleWindowClass).

I tried

WinActivate('Octave')

ConsoleWrite ( 'data' )

That moved the window to the forground but the string 'data' did not appear in the console.

Is there a way to accomplish this?

Two methods that work for me:

First, using ControlSend to a visible Octave window

$sProcess = "C:\Octave\3.2.4_gcc-4.4.0\bin\octave.exe"
Run($sProcess, "C:\Octave\3.2.4_gcc-4.4.0\bin", @SW_SHOW)
WinWait($sProcess)
ControlSend($sProcess,"","","(8+4)/2" & @CRLF, 1)

Second, using StdInWrite to a hidden Octave Window

#include <Constants.au3>
$pOctave = Run("C:\Octave\3.2.4_gcc-4.4.0\bin\octave.exe", "C:\Octave\3.2.4_gcc-4.4.0\bin", @SW_SHOW, $STDIN_CHILD + $STDOUT_CHILD)
StdinWrite($pOctave, "(8+4)/2" & @CRLF)
StdinWrite($pOctave)
Local $data
While True
    $data &= StdoutRead($pOctave)
    If @error Then ExitLoop
    Sleep(25)
WEnd
$data = StringRegExpReplace($data, "(?s)(.*)(ans\s=.*)", "$2")
MsgBox(0, "Answer", $data)
Link to comment
Share on other sites

  • 1 month later...

Two methods that work for me:

First, using ControlSend to a visible Octave window

$sProcess = "C:\Octave\3.2.4_gcc-4.4.0\bin\octave.exe"
Run($sProcess, "C:\Octave\3.2.4_gcc-4.4.0\bin", @SW_SHOW)
WinWait($sProcess)
ControlSend($sProcess,"","","(8+4)/2" & @CRLF, 1)

Second, using StdInWrite to a hidden Octave Window

#include <Constants.au3>
$pOctave = Run("C:\Octave\3.2.4_gcc-4.4.0\bin\octave.exe", "C:\Octave\3.2.4_gcc-4.4.0\bin", @SW_SHOW, $STDIN_CHILD + $STDOUT_CHILD)
StdinWrite($pOctave, "(8+4)/2" & @CRLF)
StdinWrite($pOctave)
Local $data
While True
    $data &= StdoutRead($pOctave)
    If @error Then ExitLoop
    Sleep(25)
WEnd
$data = StringRegExpReplace($data, "(?s)(.*)(ans\s=.*)", "$2")
MsgBox(0, "Answer", $data)

Thanks for the examples. I have confirmed that both of these work for. Regarding the second example, I was wondering how the Octave window gets closed. It has something to do with the $STDIN_CHILD + $STDOUT_CHILD but I am not sure I understand why.

When the script is executed,

Link to comment
Share on other sites

Look up Run in the help file, it will explain what they are.

Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic]

Link to comment
Share on other sites

Bo8ster, when i run your console capture script it doesnt stay in the loop. What am i doing wrong? I have a script i would like to monitor but i cant get your script to run long enough. Thanks!

@MasonMill - its not expected to stay in the loop. When script one finishes, script two will stop (controlled by the if statement).

To run your script, replace "C:\<....>\workspace.au3" with the full path of your script in the second script.

Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic]

Link to comment
Share on other sites

ProcessWaitClose($foo) is used to wait till the process finishes. The program should stop in the while loop till the processing is done.

I suggest you add #AutoIt3Wrapper_run_debug_mode=Y and some additional ConsoleWrites in my second script to see what is going on.

Post your code because code says more then your words can. SciTe Debug mode - it's magic: #AutoIt3Wrapper_run_debug_mode=Y. Use Opt("MustDeclareVars", 1)[topic="84960"]Brett F's Learning To Script with AutoIt V3[/topic][topic="21048"]Valuater's AutoIt 1-2-3, Class... is now in Session[/topic]Contribution: [topic="87994"]Get SVN Rev Number[/topic], [topic="93527"]Control Handle under mouse[/topic], [topic="91966"]A Presentation using AutoIt[/topic], [topic="112756"]Log ConsoleWrite output in Scite[/topic]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...