1
A
回答
5
要得到的結果直接就可以使用ManagementObject.InvokeMethod Method (String, ManagementBaseObject, InvokeMethodOptions)
版本的InvokeMethod方法。
像這樣
using System;
using System.Collections.Generic;
using System.Management;
using System.Text;
namespace GetWMI_Info
{
class Program
{
// This method is used to format the volume.
static void Main(string[] args)
{
try
{
ManagementScope Scope;
Scope = new ManagementScope("\\\\.\\root\\CIMV2", null);
Scope.Connect();
ObjectGetOptions Options = new ObjectGetOptions();
ManagementPath Path = new ManagementPath("Win32_Volume.DeviceID=\"\\\\\\\\?\\\\Volume{178edf63-2039-11e2-8012-005056c00008}\\\\\"");
ManagementObject ClassInstance= new ManagementObject(Scope, Path, Options);
ManagementBaseObject inParams = ClassInstance.GetMethodParameters("Format");
ManagementBaseObject outParams= ClassInstance.InvokeMethod("Format", inParams ,null);
Console.WriteLine("{0,-35} {1,-40}","Return Value",outParams["ReturnValue"]);
}
catch (Exception e)
{
Console.WriteLine(String.Format("Exception {0} Trace {1}",e.Message,e.StackTrace));
}
Console.WriteLine("Press Enter to exit");
Console.Read();
}
}
}
現在,如果你使用的是ManagementOperationObserver對於異步執行,就可以得到結果的ObjectReady
事件
像這樣
using System;
using System.Collections.Generic;
using System.Management;
using System.Text;
namespace GetWMI_Info
{
public class InvokeAsync
{
public InvokeAsync()
{
// Create a results watcher object,
ManagementOperationObserver results = new ManagementOperationObserver();
// Attach handler to events for results and completion
results.ObjectReady += new ObjectReadyEventHandler(this.NewObject);
results.Completed += new CompletedEventHandler(this.Done);
ManagementScope Scope;
Scope = new ManagementScope("\\\\.\\root\\CIMV2", null);
Scope.Connect();
ObjectGetOptions Options = new ObjectGetOptions();
ManagementPath Path = new ManagementPath("Win32_Volume.DeviceID=\"\\\\\\\\?\\\\Volume{178edf63-2039-11e2-8012-005056c00008}\\\\\"");
ManagementObject ClassInstance = new ManagementObject(Scope, Path, Options);
ManagementBaseObject inParams = ClassInstance.GetMethodParameters("Format");
ClassInstance.InvokeMethod(results, "Format", inParams, null);
while (!this.Completed)
{
System.Threading.Thread.Sleep(1000);
}
this.Reset();
}
private bool isCompleted = false;
private void NewObject(object sender,
ObjectReadyEventArgs obj)
{
Console.WriteLine("ReturnValue : {0}", obj.NewObject["ReturnValue"]);
}
private bool Completed
{
get
{
return isCompleted;
}
}
private void Reset()
{
isCompleted = false;
}
private void Done(object sender,
CompletedEventArgs obj)
{
isCompleted = true;
}
public static void Main()
{
InvokeAsync example =
new InvokeAsync();
return;
}
}
}
相關問題
- 1. 使用ManagementObject.InvokeMethod的WMI方法()
- 2. 無效方法無法返回值
- 3. Postsharp MethodInterceptionAspect獲得方法的返回值
- 4. 使用基類方法的返回值?
- 5. MeteorJs,無法獲得方法外的method.call返回值
- 6. 類返回的方法值
- 7. 我無法獲得使用json對象的返回值
- 8. 使用PHP無法獲得返回值的函數
- 9. 使用TJvPluginManager獲得返回值的最佳方法
- 10. 無法獲得Ajax調用的返回
- 11. 使用遞歸返回無效方法
- 12. JVM如何獲得本地方法的返回值?
- 13. 如何獲得異步方法的返回值?
- 14. SagePay返回「的SuccessURL格式無效」
- 15. 獲得方法內的方法返回值
- 16. 如何獲得system.out.println返回方法
- 17. 如何獲得Laravel塊的返回值?
- 18. 如何獲得json的返回值
- 19. 如何獲得execv的返回值?
- 20. 如何獲得onBeforeUnload的返回值
- 21. 無法從方法獲得返回值(java)
- 22. 帶參數的無效方法和無參數的返回值方法?
- 23. 具有通用返回值的泛型方法的格式
- 24. System.Void類型如何爲不返回值的方法指定返回值類型?
- 25. 無法獲得entrez使用biopython返回網格術語
- 26. AsyncTask中的onPostExecute方法的返回類型是否無效?
- 27. 具有無效返回類型的方法的單元測試
- 28. 無法返回方法java內的值
- 29. 返回基類型或派生類型的方法的捕獲返回值
- 30. 如何擺脫無效的方法,如果沒有「返回」;
的守望者取得的成績,已完成事件CompletedEventArgs.Status值。 –