Jump to content


Photo

StdoutToVar


  • Please log in to reply
121 replies to this topic

#1 Sean

Sean
  • Members
  • 2462 posts

Posted 20 February 2007 - 12:09 AM

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.

#2 garry

garry
  • Members
  • 2596 posts

Posted 20 February 2007 - 06:25 PM

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


#3 corrupt

corrupt
  • Members
  • 2558 posts

Posted 23 February 2007 - 02:54 AM

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

#4 Sean

Sean
  • Members
  • 2462 posts

Posted 23 February 2007 - 03:19 AM

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

It's my pleasure!

#5 Chris

Chris
  • Administrators
  • 10727 posts

Posted 26 April 2007 - 05:54 PM

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.

#6 Sean

Sean
  • Members
  • 2462 posts

Posted 26 April 2007 - 10:54 PM

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.

#7 toralf

toralf
  • Fellows
  • 3948 posts

Posted 27 April 2007 - 04:59 AM

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?

#8 BoBo¨

BoBo¨
  • Guests

Posted 27 April 2007 - 07:01 AM

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)

#9 majkinetor

majkinetor
  • Fellows
  • 4511 posts

Posted 27 April 2007 - 07:31 AM

Sean, thx for this great func.

One question: can you make it async ?

#10 Sean

Sean
  • Members
  • 2462 posts

Posted 27 April 2007 - 11:57 AM

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?

#11 majkinetor

majkinetor
  • Fellows
  • 4511 posts

Posted 27 April 2007 - 12:57 PM

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.

#12 Sean

Sean
  • Members
  • 2462 posts

Posted 27 April 2007 - 01:20 PM

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?

#13 majkinetor

majkinetor
  • Fellows
  • 4511 posts

Posted 27 April 2007 - 01:37 PM

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)

#14 Sean

Sean
  • Members
  • 2462 posts

Posted 27 April 2007 - 02:21 PM

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.

#15 corrupt

corrupt
  • Members
  • 2558 posts

Posted 28 April 2007 - 04:19 PM

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.