Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
VERSION 5.00 Begin VB.Form Form1 Caption = "Form1" ClientHeight = 3195 ClientLeft = 60 ClientTop = 345 ClientWidth = 4680 LinkTopic = "Form1" ScaleHeight = 3195 ScaleWidth = 4680 StartUpPosition = 3 'Windows Default End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Private Sub Form_Load() '*************************************************************************** 'This script tests the manipulation of property values, in the case that the 'property is an array type '***************************************************************************
Dim Service As SWbemServices Dim Class As SWbemObject Dim P As SWbemProperty Set Service = GetObject("winmgmts:root/default")
On Error Resume Next
Set Class = Service.Get() Class.Path_.Class = "ARRAYPROP00" Set P = Class.Properties_.Add("p1", wbemCimtypeUint32, True) P.Value = Array(1, 2, 3)
myStr = "The initial value of p1 is {" For x = LBound(P.Value) To UBound(P.Value) myStr = myStr & Class.Properties_("p1")(x) If x <> UBound(Class.Properties_("p1").Value) Then myStr = myStr & ", " End If Next myStr = myStr & "}" Debug.Print myStr
'**************************************** 'First pass of tests works on non-dot API '****************************************
'Verify we can report the value of an element of the property value v = Class.Properties_("p1") Debug.Print "By indirection the first element of p1 had value:" & v(0)
'Verify we can report the value directly Debug.Print "By direct access the first element of p1 has value:" & Class.Properties_("p1")(0)
'Verify we can set the value of a single property value element ' this won't work because VB will use the vtable interface Class.Properties_("p1")(1) = 234 Debug.Print "After direct assignment the first element of p1 has value:" & Class.Properties_("p1")(1)
'Verify we can set the value of a single property value element 'this does work because v is typeless and VB therefore uses the dispatch interface Set v = Class.Properties_("p1") v(1) = 345 Debug.Print "After indirect assignment the first element of p1 has value:" & Class.Properties_("p1")(1)
'Verify we can set the value of an entire property value Class.Properties_("p1") = Array(5, 34, 178871) Debug.Print "After direct array assignment the first element of p1 has value:" & Class.Properties_("p1")(1)
myStr = "After direct assignment the entire value of p1 is {" For x = LBound(P.Value) To UBound(P.Value) myStr = myStr & Class.Properties_("p1")(x) If x <> UBound(P.Value) Then myStr = myStr & ", " End If Next myStr = myStr & "}" Debug.Print myStr If Err <> 0 Then WScript.Echo Err.Description Err.Clear End If
'**************************************** 'Second pass of tests works on dot API '****************************************
'Verify we can report the array of a property using the dot notation myStr = "By direct access via the dot notation the entire value of p1 is {" For x = LBound(Class.p1) To UBound(Class.p1) myStr = myStr & Class.p1(x) If x <> UBound(Class.p1) Then myStr = myStr & ", " End If Next myStr = myStr & "}" Debug.Print myStr
'Verify we can report the value of a property array element using the "dot" notation Debug.Print "By direct access the first element of p1 has value:" & Class.p1(0)
'Verify we can report the value of a property array element using the "dot" notation v = Class.p1 Debug.Print "By direct access the first element of p1 has value:" & v(0)
'Verify we can set the value of a property array element using the "dot" notation Class.p1(2) = 8889 Debug.Print "By direct access the second element of p1 has been set to:" & Class.p1(2)
'Verify we can set the entire array value using dot notation Class.p1 = Array(412, 3, 544) myStr = "By direct access via the dot notation the entire value of p1 has been set to {" For x = LBound(Class.p1) To UBound(Class.p1) myStr = myStr & Class.p1(x) If x <> UBound(Class.p1) Then myStr = myStr & ", " End If Next myStr = myStr & "}" Debug.Print myStr 'Service.Put (Class)
If Err <> 0 Then WScript.Echo Err.Description Err.Clear End If
'Set C = S.Get("a") 'v = C.p(0) 'C.p = vbEmpty 'VV = C.p(0) 'S.Put C End Sub
|