Guidance
指路人
g.yi.org
Guidance Forums / Rapid-Q Basic / CScript

Register 
注册
Search 搜索
首页 
Home Home
Software
Upload

  
Forum List • Thread List • Reply • Refresh • New Topic • Search • Previous • Next First 1 Last
Message1. CScript
#562
Posted by: guidance 2002-10-15 19:18:03 Last edited by: guidance 2010-12-13 13:29:49 (Total edited 1 time)
Since the COM interface support is not so satisfied in RQ and other languages, a good bridge/glue is Windows Script Host, i.e. VBScript. For example, I have a mail server ActiveX component, but neither RQ nor PHP COM function can interface with it properly, only use VBS, works very well.
You can run "CScript MyScript.VBS", just as a normal DOS command, with command line parameters, and without user interface, it will greatly complement the shortage of RQ for COM manipulation, including all MS-Office components.
I also ever used VBS CreateObject to operate IE and built a small intranet search engine/spider.

The only problem is, I still don't know how to capture the output of a console. There's an example, but didn't verified, could anybody help?
ConsoleCapture.bas:
Message2. Re: CScript
#599
Posted by: 2002-10-24 13:24:37
Right!  And even in an RQ program you can SHELL "cscript xyz.vbs"
In QuickBasic I had apps that read the screen, but the instructions to do so are different in RQ but they are there!  Maybe the trick is to (1) make the console app write the results in a known location by using the locate instruction (My programs would LOCATE 2,1: SHELL "xyz.exe arg1 arg1" etc and since the output of xyz always has a known format I could read screen lines and get the output info into my QuickBasic or RQ program).
Basically you need a FUNCTION getscreenline(row%) which will use the RQ ability to read the characters and make a string which you might then trim$ or whatever.  Once that little function is written, then just forget the details and get any console line as a string in your RQ program.  I would share the code for such a function but I don't have one using the RQ instruction to retrieve a character.  Best wishes,
Message3. Re: CScript
#608
Posted by: guidance 2002-10-25 14:47:24
I mean capture the stdout, even no console screen showed.
If use cscript to operate Excel with "CreateObject", we'd better don't let console window be displayed, just like DOS redirect, is it possible to "redirect" to memory (pipe?) rather than to a file?
Message4. Re: CScript
#800
Posted by: 2003-02-20 22:47:11
Maybe an array?
Message5. Re: CScript
#801
Posted by: yoingco 2003-02-21 01:11:19
Hi Guidance.

Use either or both ConsoleCapture.BAS, ReadPipe.BAS and Console2000
to get output. You could:

get mouse/key output

get (use) readpipe, readconsoleoutput, etc functions to read characters
and the like.

It depends exactly what you want. As for not using the console window.
I would of thought your eventual application would have to use a console.
The pipe method means creating a seperate process/thread to specifically
monitor the pipe. But readFile works well (i.e redirect/duplicate the console
output handle so it goes into your memory area/file area (buffer). As said.
Look in the above codes.

regards

john
Message6. Re: CScript
#802
Posted by: guidance 2003-03-01 15:21:02 Last edited by: guidance 2010-12-13 13:32:06 (Total edited 1 time)
Hi, John, thanks for your hints! Seems ReadPipe.BAS is not here, could you help to upload it? Thanks!
Message7. Re: CScript
#804
Posted by: yoingco 2003-03-01 21:53:11
Hi Guidance.

Sorry! Deleted it long time ago! In fact sometimes I upload to your site
to act as a backup for me! So I can just download my stuff from your
site!

I did investigate your output thing further. In both C and the RapidQ
ConsoleCapture.BAS codes (C from the net -  search google for "Console
Capture") I saw that both methods do as follows:

execute your RapidQ programme. This gives the programme a StartupInfo
structure, which you can obtain from api GetStartupInfo(). From there
you create your file or pipe or whartever. You pass the file handle or
pipe handle (or Memory Handle) to the startupinfo structure`s input and/or
output handle. You then monitor the pipe as "normal" with a CreateProcess
call (well defined in ConsoleCapture.BAS). Basically. You are changing the
startupinfo so that the next process (newly created process - CreateProcess) is now using the new input/output handles. The old process (the one with the original startupinfo) is your original RapidQ programme (the one that you are executing first).


Hope that helps.

regards

john
Forum List • Thread List • Reply • Refresh • New Topic • Search • Previous • Next First 1 Last
掌柜推荐
 
 
 
 
 
 
 
 
 
 
 
 
© Thu 2024-4-25  Guidance Laboratory Inc.
Email:webmaster1g.yi.org Hits:0