我如何使用 WMI 获取 BaseBoard 的序列号?
How do i get SerialNumber of BaseBoard with WMI?
一个很好的例子是在 Powerbuilder 中使用 WMI 来终止 运行 进程。
可以使用相同的技术来获取 BaseBoard 的 SerialNumber。我需要扩展相同的代码来处理 WQL 查询的 return 个值。
我要执行的WQL查询是:
SELECT Product, SerialNumber FROM Win32_BaseBoard
我可以执行上面的查询,但不知道如何在调用 ExecuteStatement() 函数后将 SerialNumber 保存在变量中.
请查看 link 以获得完整的 PowerBuilder 代码。
以下是取自上述 link 的示例代码的一部分,用于显示函数。
wsh = CREATE OleObject
wsh.ConnectToNewObject("MSScriptControl.ScriptControl")
wsh.Language = "VBScript"
wsh.AddCode(TheCode)
TRY
wsh.ExecuteStatement(FunctionName)
CATCH (RunTimeError Re01)
MessageBox("Query Error", "Following code has some problems.~r~n~r~n" + TheCode, StopSign!)
END TRY
wsh.DisconnectObject()
DESTROY wsh
重要函数调用
wsh.ExecuteStatement(函数名)
在使用 returned SerialNumber of BaseBoard 设置我的 PowerBuilder 局部变量的函数调用之后要做什么?
OLEObject ole_wsh
Any la_baseboard[]
string ls_message
ole_wsh = CREATE OLEObject
ole_wsh.ConnectToNewObject("MSScriptControl.ScriptControl")
ole_wsh.Language = "vbscript"
ole_wsh.AddCode('Function rtnBaseBoard()~r~n' &
+ 'DIM objBaseBoard(2)~r~n' &
+ 'strComputer = "."~r~n' &
+ 'Set objWMIService =' &
+ ' GetObject("winmgmts:\" & strComputer & "\root\cimv2")~r~n' &
+ 'Set colItems =' &
+ ' objWMIService.ExecQuery("SELECT Product, SerialNumber FROM Win32_BaseBoard")~r~n' &
+ 'For Each objItem in colItems~r~n' &
+ 'objBaseBoard(0) = objItem.Product~r~n' &
+ 'objBaseBoard(1) = objItem.SerialNumber~r~n' &
+ 'Next~r~n' &
+ 'rtnBaseBoard = objBaseBoard~r~n' &
+ 'End Function')
la_baseboard[] = ole_wsh.Eval("rtnBaseBoard")
ole_wsh.DisconnectObject()
DESTROY ole_wsh
ls_message = "Product: " + string(la_baseboard[1]) + "~r~n" + &
+ "SerialNumber: " + string(la_baseboard[2]) + "~r~n"
MessageBox("Win32 BaseBoard",ls_message)
查看更多使用 WMI from Powerbuilder
的示例
一个很好的例子是在 Powerbuilder 中使用 WMI 来终止 运行 进程。
可以使用相同的技术来获取 BaseBoard 的 SerialNumber。我需要扩展相同的代码来处理 WQL 查询的 return 个值。
我要执行的WQL查询是:
SELECT Product, SerialNumber FROM Win32_BaseBoard
我可以执行上面的查询,但不知道如何在调用 ExecuteStatement() 函数后将 SerialNumber 保存在变量中.
请查看 link 以获得完整的 PowerBuilder 代码。
以下是取自上述 link 的示例代码的一部分,用于显示函数。
wsh = CREATE OleObject
wsh.ConnectToNewObject("MSScriptControl.ScriptControl")
wsh.Language = "VBScript"
wsh.AddCode(TheCode)
TRY
wsh.ExecuteStatement(FunctionName)
CATCH (RunTimeError Re01)
MessageBox("Query Error", "Following code has some problems.~r~n~r~n" + TheCode, StopSign!)
END TRY
wsh.DisconnectObject()
DESTROY wsh
重要函数调用 wsh.ExecuteStatement(函数名)
在使用 returned SerialNumber of BaseBoard 设置我的 PowerBuilder 局部变量的函数调用之后要做什么?
OLEObject ole_wsh
Any la_baseboard[]
string ls_message
ole_wsh = CREATE OLEObject
ole_wsh.ConnectToNewObject("MSScriptControl.ScriptControl")
ole_wsh.Language = "vbscript"
ole_wsh.AddCode('Function rtnBaseBoard()~r~n' &
+ 'DIM objBaseBoard(2)~r~n' &
+ 'strComputer = "."~r~n' &
+ 'Set objWMIService =' &
+ ' GetObject("winmgmts:\" & strComputer & "\root\cimv2")~r~n' &
+ 'Set colItems =' &
+ ' objWMIService.ExecQuery("SELECT Product, SerialNumber FROM Win32_BaseBoard")~r~n' &
+ 'For Each objItem in colItems~r~n' &
+ 'objBaseBoard(0) = objItem.Product~r~n' &
+ 'objBaseBoard(1) = objItem.SerialNumber~r~n' &
+ 'Next~r~n' &
+ 'rtnBaseBoard = objBaseBoard~r~n' &
+ 'End Function')
la_baseboard[] = ole_wsh.Eval("rtnBaseBoard")
ole_wsh.DisconnectObject()
DESTROY ole_wsh
ls_message = "Product: " + string(la_baseboard[1]) + "~r~n" + &
+ "SerialNumber: " + string(la_baseboard[2]) + "~r~n"
MessageBox("Win32 BaseBoard",ls_message)
查看更多使用 WMI from Powerbuilder
的示例