Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

StdoutToVar


  • Please log in to reply
121 replies to this topic
Sean
  • Members
  • 2462 posts
  • Last active: Feb 07 2012 04:00 AM
  • Joined: 12 Feb 2007
I just saw this great post:
<!-- m -->http://www.autohotke...opic.php?t=8606<!-- m -->

I thought I might share my own version which is actually porting to AHK of the script I've been using personally.
The main difference may be that it doesn't create the console window at all, not just hiding the console.

DOWNLOAD StdoutToVar.ahk.

garry
  • Spam Officer
  • 3219 posts
  • Last active: Sep 20 2018 02:47 PM
  • Joined: 19 Apr 2005
Nice script, I don't understand DllCall, I tried with DOS before
runwait,%comspec% /c ipconfig /all |find /V "XXXX" >ipconfig.txt,,hide
run,ipconfig.txt


corrupt
  • Members
  • 2558 posts
  • Last active: Nov 01 2014 03:23 PM
  • Joined: 29 Dec 2004
Hi Sean. Your version has a few interesting differences. Thanks for sharing :) .

Sean
  • Members
  • 2462 posts
  • Last active: Feb 07 2012 04:00 AM
  • Joined: 12 Feb 2007

Hi Sean. Your version has a few interesting differences. Thanks for sharing :) .

It's my pleasure!

Chris
  • Administrators
  • 10727 posts
  • Last active:
  • Joined: 02 Mar 2004
I've added a link to this great script from the script showcase.

I'm sure you have better things to do with your time, but the topmost post could use a bit more introduction (even a single sentence), and possibly a simple usage example. When I examine a post for accessibility and presentation, I ask:

1) What is somone's first impression upon viewing this post?
2) Can someone find out the gist of the post in under 30 seconds? (This helps them decide whether to continue reading the whole thing.)

Thanks for sharing your proficiency and creativity.

Sean
  • Members
  • 2462 posts
  • Last active: Feb 07 2012 04:00 AM
  • Joined: 12 Feb 2007

I've added a link to this great script from the script showcase.

Thanks for adding the link to my script in this great place.

I'm sure you have better things to do with your time, but the topmost post could use a bit more introduction (even a single sentence), and possibly a simple usage example.

Now it's going to be weekend, I'll update the script, maybe adding StdIn too.
Thanks for pointing it out.

toralf
  • Moderators
  • 4035 posts
  • Last active: Aug 20 2014 04:23 PM
  • Joined: 31 Jan 2005
I would be interested in these points:
- Is it reliable/fail save?
- Are there any limitations on commands to be used?
- Is it fast? It looks like, since it seems to be using far less commands then CmdRet.
- How could a working directory be specified?

Has someone tested this code?
Ciao
toralf
 
I use the latest AHK version (1.1.15+)
Please ask questions in forum on ahkscript.org. Why?
For online reference please use these Docs.

BoBo¨
  • Guests
  • Last active:
  • Joined: --

and possibly a simple usage example.

I've to backup Chris' proposal. Noobs (I guess not necessarily your target audience :wink:) will definitely benefit from having a sample to understand its full potential. Thx for sharing it. 8)

majkinetor
  • Moderators
  • 4512 posts
  • Last active: Jul 29 2016 12:40 AM
  • Joined: 24 May 2006
Sean, thx for this great func.

One question: can you make it async ?
Posted Image

Sean
  • Members
  • 2462 posts
  • Last active: Feb 07 2012 04:00 AM
  • Joined: 12 Feb 2007

One question: can you make it async ?

I updated the script, however, it's a preliminary version yet.
Anyway, do you mean like this by async?

majkinetor
  • Moderators
  • 4512 posts
  • Last active: Jul 29 2016 12:40 AM
  • Joined: 24 May 2006
No. I mean about equivalent to CMDRet_Stream

Btw, I was always wondering is it possible to

; Create the console app without creating a console window

so thx for this.
Posted Image

Sean
  • Members
  • 2462 posts
  • Last active: Feb 07 2012 04:00 AM
  • Joined: 12 Feb 2007

No. I mean about equivalent to CMDRet_Stream

Well, I failed to see a difference if I understood it correctly.
The StdOutput() in my script didn't wait until the console app finished either.
It also retrieved the data whenever available. Was that what you meant?

majkinetor
  • Moderators
  • 4512 posts
  • Last active: Jul 29 2016 12:40 AM
  • Joined: 24 May 2006
The difference is CMDRet_Stream notifies you on each new line, not after everything is finnished. Your version works like non stream version of CMDRet.

Anyway, its hard to define how this should work. For instance systeminfo command first displays status of currently scaned system item in the first line, deliting its contenst to show new status. Then it writes output normaly after everything is collected. Similar is Lame compressor which uses single line to update procentage.

When calling rar console app, CMDRet will return this string also

File name...  0% 1% 2% 3% .... 99% OK.


While rar is compressing single file it changes single line and CMDRet returns each changed char. CMDRet_Stream doesn't do that as timer is slow. I wonder is there any reliable solution with AHK to be sure you got everything program wrote... CMDRet seams to catch all, but it is non async (i.e. the user routine is not called as soon as change is there)
Posted Image

Sean
  • Members
  • 2462 posts
  • Last active: Feb 07 2012 04:00 AM
  • Joined: 12 Feb 2007

The difference is CMDRet_Stream notifies you on each new line, not after everything is finnished. Your version works like non stream version of CMDRet.

I see, you meant line-by-line retrieving.

PS. I just noticed the SetTimer there.

corrupt
  • Members
  • 2558 posts
  • Last active: Nov 01 2014 03:23 PM
  • Joined: 29 Dec 2004

When calling rar console app, CMDRet will return this string also

File name...  0% 1% 2% 3% .... 99% OK.


While rar is compressing single file it changes single line and CMDRet returns each changed char. CMDRet_Stream doesn't do that as timer is slow.

This isn't due to a slow timer in CMDret_Stream but due something that was overlooked. CMDret_Stream doesn't currently trigger on new output but triggers when a new line is added. This is why the information is usually retrieved after execution instead of during. However, due to an apparent lack of interest in CMDret, although it is still being developed, I have decided not to spend the time posting any updates for it. CMDret was originally provided as a function to allow people at the forum an opportunity to participate in development in hopes that the result would inspire Chris to add this functionality (possibly with similar syntax and functionality of the version(s) posted) as a built-in command/function in AutoHotkey. This does not seem to have turned out to be the case unfortunately. I will likely post one more updated version soon with a message in the first post indicating that the version posted will be the final version.

Sean, It looks like your version is coming along nicely :) . I would have preferred if it the functionality was produced as a single function instead of several functions that rely on each other but some people tend to prefer things broken apart in small pieces. It's all good :) .

One of the main reasons for CMDret creating a hidden console window was for compatibility for a few specific applications and for creating workarounds for 16 bit applications (unreleased versions). This difference can be made in either version by modifying one line of code though.