AW: How to get a return value from vbs into rev?

Tiemo Hollmann TB toolbook at kestner.de
Thu Oct 15 08:46:18 EDT 2009


Hi Neil,
thanks for your extensive hints, I will go into it and give it a try
Tiemo


> -----Ursprüngliche Nachricht-----
> Von: use-revolution-bounces at lists.runrev.com [mailto:use-revolution-
> bounces at lists.runrev.com] Im Auftrag von Neil Allan
> Gesendet: Donnerstag, 15. Oktober 2009 13:07
> An: How to use Revolution
> Betreff: Re: How to get a return value from vbs into rev?
> 
> I'm not sure which version of rev you are using but you may not need to
> use
> the shell() function.
> 
> I personally use vbscript to get WMI data from the PC such as HDD and USB
> Hardware serial numbers. I use the WMI Code Creator availible from
> microsoft's website to generate the vbs code.
> http://www.microsoft.com/downloads/details.aspx?FamilyID=2cc30a64-ea15-
> 4661-8da4-55bbc145c30e
> This is a little long winded and perhaps a little more involved than you
> need but I want to be pretty clear on how I manage it.
> 
> so... I want to enumerate usb devices attached to the PC...I know this
> information (and lots more) is availible through WMI in windows.
> 
> Fire up WMI Code Creator (you may need dot.net crap installed)
> Select "Query for data from a WMI Class"
> Select "root/CIMV2" as a namespace
> Select "Dependant" from the properties field
> 
> Pure vbs code will be generated for you in the "Generated Code" window:
> 
> strComputer = "."
> Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
> Set colItems = objWMIService.ExecQuery( _
>     "SELECT * FROM Win32_USBControllerDevice",,48)
> For Each objItem in colItems
>     Wscript.Echo "-----------------------------------"
>     Wscript.Echo "Win32_USBControllerDevice instance"
>     Wscript.Echo "-----------------------------------"
>     Wscript.Echo "Dependent: " & objItem.Dependent
> Next
> 
> >From here you have 2 Options:
> 
> The 1st Option:
> 
> Save or write the generated code to a *.vbs file either staticly or
> dynamicly, and call it using
> put shell("cscript c:\MyWMIQuery.vbs") --this will dump the result to
> stdout
> put shell("cscript c:\MyWMIQuery.vbs") into tVariable -- this will dump
> the
> result into variable tVariable
> put shell("cscript c:\MyWMIQuery.vbs") into field "field" --this will dump
> the result into a field called "field"
> 
> The downside is your code will be "exposed" as plain text and you will
> have
> to set the hideConsoleWindows to true or your user will see the vbs script
> executing in the command line window.
> 
> The 2nd and my preferred option is to use the "do *SCRIPT* as vbscript"
> function in runrev.
> 
> The main thing you need to know is that when your vbs function is executed
> in THIS way, the result of the vbs function will have to be stored in a
> variable called "result" in your vbscript, thus it will be transferred to
> "the result" variable in runrev.
> 
> What I do is put my modified WMI vbscript into a field "fldScript" in
> runrev
> this makes it easier to read, however it does not have to be visible :)
> 
> strComputer = "."
> Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
> Set colItems = objWMIService.ExecQuery( _
>     "SELECT * FROM Win32_USBControllerDevice",,48)
> For Each objItem in colItems
>      tTemp = tTemp & vbcrlf & objItem.Dependent
> Next
> result = tTemp
> 
> Note how my rev version of the vbs script makes no use of "Wscript.Echo"
> because it is no use for us here. So I have also removed the fancy
> formatting stuff:
> Wscript.Echo "-----------------------------------"
> Wscript.Echo "Win32_USBControllerDevice instance"
> They serve no purpose to us, we only want the raw information which is
> returned in vbs by the function "objItem.Dependant"
> 
> What I did was instead of echoing the values to stdout I concatenated them
> to the vbs "tTemp" Variable, Once I have all the information I need in the
> tTemp variable, finally assign it to a variable called "result" in
> vbscript.
> 
> To call it and get info back in rev you can then use:
> 
> do field "fldScript" as vbscript
> put the result --this will dump the result of the vbscript to stout
> 
> do field "fldScript" as vbscript
> put the result into field "fldOutput" --this will dump the result of the
> vbs
> function into a field called "fldOutput"
> etc...
> 
> One last piece of advice I would issue is do only very minimum with vbs,
> the
> result of the above function contains all sorts of information but I would
> rather sift through it with revTalk than vbscript. The main lines I am
> interested in are the ones containing "USBSTOR"
> 
> Hope this helps.
> 
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution




More information about the use-livecode mailing list