Posted: Fri Sep 26, 2008 9:31 pm
If you ask COMate to retrieve a string property when in fact it encounters an integer property then it simply converts it to a string etc.
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
' Obtain an instance of the the class
' using a key property value.
Set objShare = objWMIService.Get("Win32_NetworkAdapterConfiguration.Index='4'")
' Obtain an InParameters object specific
' to the method.
Set objInParam = objShare.Methods_("EnableStatic"). _
inParameters.SpawnInstance_()
' Add the input parameters.
objInParam.Properties_.Item("IPAddress") = "192.168.110.1"
objInParam.Properties_.Item("SubnetMask") = "255.255.255.0"
' Execute the method and obtain the return status.
' The OutParameters object in objOutParams
' is created by the provider.
Set objOutParams = objWMIService.ExecMethod("Win32_NetworkAdapterConfiguration.Index='4'", "EnableStatic", objInParam)
' List OutParams
Wscript.Echo "Out Parameters: "
Wscript.echo "ReturnValue: " & objOutParams.ReturnValue
Code: Select all
XIncludeFile "COMate.pbi"
XIncludeFile "VariantHelper_Include.pbi"
Define.COMateObject objWMIService, Adapter
colAdapters.COMateEnumObject
strComputer.s = "."
;Interface_Index.s = "the route table Interface Index" ; works for Win Vista only
Index.s = "the LUID index from the registry" ; works with winXP and Win Vista
IP_Address_to_Set_and_subnet_mask.s = "Your Static IP address here , sub_net_mask "
objWMIService = COMate_GetObject("winmgmts:\\" + strComputer + "\root\cimv2", "")
If objWMIService
;colAdapters = objWMIService\CreateEnumeration("ExecQuery('Select * from Win32_NetworkAdapterConfiguration Where InterfaceIndex= $0027" + Interface_Index +"$0027')") ; win Vista only
colAdapters = objWMIService\CreateEnumeration("ExecQuery('Select * from Win32_NetworkAdapterConfiguration Where Index= $0027" + Index.s +"$0027')") ; winXP and Win Vista
If colAdapters
Adapter= colAdapters\GetNextObject()
While Adapter
Adapter\Invoke("EnableStatic, $0027" + IP_Address_to_Set_and_subnet_mask + " $0027)
Adapter\Release()
Adapter = colAdapters\GetNextObject()
Wend
colAdapters\Release()
EndIf
objWMIService\Release()
EndIf
Code: Select all
strComputer = "."
Set objWMIService = GetObject( _
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration " _
& "where IPEnabled=TRUE")
strIPAddress = Array("192.168.1.141")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.100")
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic( _
strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(_
strGateway, strGatewaymetric)
Next
Ok, Thanks.Srod wrote: Sorry, I have no experience with such stuff and lack the time right now.
Yes I use it on all possible combination, as simple string with arrays,SFSxOI wrote: maybe something like this using the Invoke of Comate ?
Code: Select all
Set objInParam = objShare.Methods_("EnableStatic"). _
inParameters.SpawnInstance_()
Code: Select all
objInParam.COMateObject = objShare\GetObjectProperty("Methods_('EnableStatic')\inParameters\SpawnInstance_()")
Code: Select all
;EnableExplicit
;'Les objets de base pour travailler avec OOo
Declare MakePropertyValue(cName.s, uValue.b)
Declare MakePropertyValue1(cName.s, uValue.s)
Declare.s ConvertToUrl(strFile.s)
IncludePath ".\"
XIncludeFile "COMate.pbi"
XIncludeFile "VariantHelper_Include.pb"
Define mafeuille,lesfeuille
Define.COMateObject oSM,oDesk,oDoc
Define.safearray *openpar
Define.variant openarray
*openpar = saCreateSafeArray(#VT_DISPATCH, 0, 3)
SA_DISPATCH(*openpar, 0) = MakePropertyValue("ReadOnly", #True)
SA_DISPATCH(*openpar, 1) = MakePropertyValue1("Password", "ISABELLE")
SA_DISPATCH(*openpar, 2) = MakePropertyValue("Hidden", #False)
V_ARRAY_DISP(openarray) = *openpar
;'Instancie OOo : ces deux lignes sont obligatoires avec VB dans tout code !
oSM = COMate_CreateObject("com.sun.star.ServiceManager")
FILE.S= ConvertToUrl("travail.ots")
oDesk = oSM\GetObjectProperty("createInstance('com.sun.star.frame.Destop')")
; oDoc = oDesk\GetObjectProperty("loadComponentFromURL('"+file+"', '_blank', 0," + Str(openarray) + " as variant)"
oDoc = oDesk\GetObjectProperty("loadComponentFromURL('"+file+"' , '_blank', 0, " + Str(openarray) + " as variant)")
If oDoc
oDoc\Release()
EndIf
oDesk\Release()
oSM\Release()
End
Procedure MakePropertyValue(cName.s, uValue.b)
Define.COMateObject oServiceManager,oStruct
oServiceManager = COMate_CreateObject("com.sun.star.ServiceManager")
If oServiceManager
oStruct = oServiceManager\GetObjectProperty("Bridge_GetStruct('com.sun.star.beans.PropertyValue')")
oStruct\SetProperty("Name = " + cName)
oStruct\SetProperty("Value = " + Str(uValue))
ProcedureReturn oStruct
EndIf
EndProcedure
Procedure MakePropertyValue1(cName.s, uValue.s)
Define.COMateObject oServiceManager,oStruct
oServiceManager = COMate_CreateObject("com.sun.star.ServiceManager")
If oServiceManager
oStruct = oServiceManager\GetObjectProperty("Bridge_GetStruct('com.sun.star.beans.PropertyValue')")
oStruct\SetProperty("Name = " + cName)
oStruct\SetProperty(Chr(34)+"Value = " + uValue )
ProcedureReturn oStruct
EndIf
EndProcedure
Procedure.s ConvertToUrl(strFile.s)
strFile = ReplaceString(strFile, "\", "/")
strFile = ReplaceString(strFile, ":", "|")
strFile= ReplaceString(strFile, " ", "%20")
strFile = "file:///" + strfile
ProcedureReturn strFile
EndProcedure
Code: Select all
Procedure MakePropertyValue(cName.s, uValue.b)
Define.COMateObject oServiceManager,oStruct
Define *ret.VARIANT, iDisp.IDISPATCH
oServiceManager = COMate_CreateObject("com.sun.star.ServiceManager")
If oServiceManager
*ret = oServiceManager\GetVariantProperty("Bridge_GetStruct('com.sun.star.beans.PropertyValue')")
If *ret
If *ret\vt <> #VT_DISPATCH
VariantChangeType_(*ret, *ret, 0, #VT_DISPATCH)
EndIf
If *ret\vt = #VT_DISPATCH
iDisp = *ret\pdispVal
oStruct = COMate_WrapCOMObject(iDisp)
If oStruct
oStruct\SetProperty("Name = " + cName)
oStruct\SetProperty("Value = " + Str(uValue))
oStruct\Release() ;Required to keep the reference count in check.
EndIf
Else
VariantClear_(*ret)
EndIf
FreeMemory(*ret) ;We do not use VariantClear_() as we do not wish to release the iDisp object which we are returning from this function.
EndIf
EndIf
ProcedureReturn iDisp
EndProcedure
this line help the returncode is =0 and the error descripion is ok!srod wrote:Code: Select all
objInParam.COMateObject = objShare\GetObjectProperty("Methods_('EnableStatic')\inParameters\SpawnInstance_()")
Code: Select all
objInParam.Properties_.Item("IPAddress") = "192.168.110.1"
Code: Select all
objInParam\SetProperty("Properties_\Item('IPAddress') = '192.168.110.1'")