Just starting out? Need help? Post your questions and find answers here.
NoahPhense
Addict
Posts: 1999 Joined: Thu Oct 16, 2003 8:30 pm
Location: North Florida
Post
by NoahPhense » Thu May 13, 2010 2:39 pm
srod wrote: NoahPhense wrote: Thanks srod, where do I get the latest version of the ComMatePlus?
- np
Hi,
I have just updated the code to include some error trapping. You can trap errors (e.g. syntax errors) either individually or using a #COMate_CatchAllEvents event handler.
See the nxSoftware site for the latest versions of COMatePLUS etc.
Thanks, just downloaded -- I'll shout back in a bit.
- np
NoahPhense
Addict
Posts: 1999 Joined: Thu Oct 16, 2003 8:30 pm
Location: North Florida
Post
by NoahPhense » Thu May 13, 2010 4:20 pm
Here's what I have so far.. see the comment in the middle of the script.
- np
Code: Select all
XIncludeFile "COMatePLUS.pbi"
code$ = "Dim DomainName" + #CRLF$
code$ + "Dim UserAccount" + #CRLF$
code$ + "Set net = WScript.CreateObject(" + Chr(34) + "WScript.Network" + Chr(34) + ")" + #CRLF$
code$ + "local = net.ComputerName" + #CRLF$
code$ + "DomainName = " + Chr(34) + "XXXXXX" + Chr(34) + #CRLF$
code$ + "UserAccount = " + Chr(34) + "XXXXXX" + Chr(34) + #CRLF$
code$ + "set group = GetObject(" + Chr(34) + "WinNT://" + Chr(34) + "& local &" + Chr(34) + "/Administrators" + Chr(34) + ")" + #CRLF$
code$ + "group.Add " + Chr(34) + "WinNT://" + Chr(34) + "& DomainName &" + Chr(34) + "/" + Chr(34) + "& UserAccount &" + Chr(34) + Chr(34) + #CRLF$
code$ + "DomainName = " + Chr(34) + "XXXXXX" + Chr(34) + #CRLF$
code$ + "UserAccount = " + Chr(34) + "XXXXXX" + Chr(34) + #CRLF$
code$ + "set group = GetObject(" + Chr(34) + "WinNT://" + Chr(34) + "& local &" + Chr(34) + "/Administrators" + Chr(34) + ")" + #CRLF$
code$ + "group.Add " + Chr(34) + "WinNT://" + Chr(34) + "& DomainName &" + Chr(34) + "/" + Chr(34) + "& UserAccount &" + Chr(34) + Chr(34) + #CRLF$
; THIS CODE BELOW IS COPIED .. I DON'T NEED TO PROCESS THE OUTPUT OF THE ABOVE CODE, I JUST NEED IT TO EXECUTE
; NOT SURE HOW TO DO THAT
Define.COMateObject scriptObject, errorObject
scriptObject = COMate_CreateObject("MSScriptControl.ScriptControl.1")
If scriptObject
scriptObject\SetProperty("Language = 'VBScript'")
If scriptObject\Invoke("AddCode('" + code$ + "')") = #S_OK
result = scriptObject\GetIntegerProperty("Eval('result')")
MessageRequester("Script demo", Chr(34) + code$ + Chr(34) + #LF$ + #LF$ + "Produced a result of : " + Str(result))
Else
errorObject = scriptObject\GetObjectProperty("Error")
If errorObject
MessageRequester("Script demo - error reported!", Chr(34) + errorObject\GetStringProperty("Text") + Chr(34) + #LF$ + " produced the following error : " + #LF$ + #LF$ + errorObject\GetStringProperty("Description"))
errorObject\Release()
EndIf
EndIf
scriptObject\Release()
Else
MessageRequester("COMate - Scripting demo", "Couldn't create the scripting object!")
EndIf
NoahPhense
Addict
Posts: 1999 Joined: Thu Oct 16, 2003 8:30 pm
Location: North Florida
Post
by NoahPhense » Thu May 13, 2010 4:45 pm
I get the error using COMMATE, "object required: WScript" ..
srod
PureBasic Expert
Posts: 10589 Joined: Wed Oct 29, 2003 4:35 pm
Location: Beyond the pale...
Post
by srod » Thu May 13, 2010 7:03 pm
The following works fine here :
Code: Select all
IncludePath "..\"
XIncludeFile "COMatePLUS.pbi"
code$ = "Dim DomainName" + #CRLF$
code$ + "Dim UserAccount" + #CRLF$
code$ + "Set net = CreateObject(" + Chr(34) + "WScript.Network" + Chr(34) + ")" + #CRLF$
code$ + "computerName = net.ComputerName"
Define.COMateObject scriptObject, errorObject
scriptObject = COMate_CreateObject("MSScriptControl.ScriptControl.1")
If scriptObject
scriptObject\SetProperty("Language = 'VBScript'")
If scriptObject\Invoke("AddCode('" + code$ + "')") = #S_OK
result$ = scriptObject\GetStringProperty("Eval('computerName')")
MessageRequester("Script demo", Chr(34) + code$ + Chr(34) + #LF$ + #LF$ + "Produced a result of : " + result$)
Else
errorObject = scriptObject\GetObjectProperty("Error")
If errorObject
MessageRequester("Script demo - error reported!", Chr(34) + errorObject\GetStringProperty("Text") + Chr(34) + #LF$ + " produced the following error : " + #LF$ + #LF$ + errorObject\GetStringProperty("Description"))
errorObject\Release()
EndIf
EndIf
scriptObject\Release()
Else
MessageRequester("COMate - Scripting demo", "Couldn't create the scripting object!")
EndIf
Note how I altered the "Set net = ..." script line. For your code, make a similar alteration and use the 'ExecuteStatement' method of the script object.
Code: Select all
If scriptObject
scriptObject\SetProperty("Language = 'VBScript'")
If scriptObject\Invoke("ExecuteStatement('" + code$ + "')") = #S_OK
MessageRequester("Script demo", "Success!")
Else
...
By the way, I am guessing that you can do all this stuff with COMate and without having to invoke the scipting host.
I may look like a mule, but I'm not a complete ass.