喫茶XRAYトップページ

[スレッド全体
]

[4964] Windows Management Instrumentation返信 削除
2011/6/30 (木) 18:16:04 Syake
こんにちはマスター。
パクリなくりですが、こんなんどでしょうか?
Microsoft WMI Scripting V1.2 Library は不要です。

procedure XXXXX();

 function GetWMIObject(const objectName: String): IDispatch;
  var
    chEaten: Integer;
    BindCtx: IBindCtx;
    Moniker: IMoniker;
  begin
    OleCheck(CreateBindCtx(0, bindCtx));
    OleCheck(MkParseDisplayName(BindCtx, StringToOleStr(objectName), chEaten, Moniker));
    OleCheck(Moniker.BindToObject(BindCtx, nil, IDispatch, Result));
  end;

var
  ObjWMIService : OLEVariant;
  oleItemList   : OLEVariant;
  oleItems      : OLEVariant;
  oleItem       : OLEVariant;
  iEnumList     : IEnumVariant;
  iEnum         : IEnumvariant;
  nValue        : LongWord;
begin
  ObjWMIService := GetWMIObject('winmgmts:\\localhost\root\cimv2');
  oleItemList   := objWMIService.ExecQuery('SELECT * FROM Win32_OperatingSystem','WQL',0);
  iEnumList := IUnknown(oleItemList._NewEnum) as IEnumVariant;
  while iEnumList.Next(1, oleItems, nValue) = S_OK do
  begin
    iEnum := IUnknown(oleItems.Properties_._NewEnum) as IEnumVariant;
    while (iEnum.Next(1, oleItem, nValue) = S_OK) do
    begin
      if VarIsNull(oleItem) then Continue;
      {適当にデータ処理・・・}
    end;
  end;
end;

DelphiXE Windows7

[5022] Re:Windows Management Instrumentation返信 削除
2011/7/19 (火) 00:03:36 Mr.XRAY
▼ Syakeさん

これですね.ありがとうございます.
例によって,いつになるか分かりませんが,記事にしたいと思います.
記事の構成を考えているのですが.多分,WMIのサンプルも書く予定ですが,
ちょっと違った構成になると思います.

実は思い出したのです.IMoniker,ワード操作フォームを作成した頃,
こんなのを調べたことがありました.
通常「モニカ」と言って,COMのインターフェイスの1つです.


[7007] Re2:Windows Management Instrumentation返信 削除
2013/8/13 (火) 13:31:54 Mr.XRAY
> 例によって,いつになるか分かりませんが,記事にしたいと思います.

モニカの部分だけ記事にしました.

[960_COM オブジェクトとモニカ] [05_WMI オブジェクトのモニカ文字列]
http://mrxray.on.coocan.jp/Delphi/plSamples/960_COM_Moniker.htm#05


[7018] Re3:Windows Management Instrumentation返信 削除
2013/8/28 (水) 13:51:43 Mr.XRAY
> モニカの部分だけ記事にしました.

続いて CreateOleObject のサンプルの記事も追加しました.

[07_CreateOleObject による WMI オブジェクトの生成]
http://mrxray.on.coocan.jp/Delphi/plSamples/898_WMI_Introduction.htm#07

ところで,某掲示板の
[EXCELでバリアント配列を使ったセル色の設定]
いわた 2013/08/27(火) 22:45:16 書込者ID:[ ""#!! ]

>CopyとPastespecialの組み合わせで書式のコピーを行なうことで、
>以前より速い描画が出来るようになりました。


を今読みました.
COM オブジェクトの処理は,オーバーヘッドがあります.
したがって,一般的には Copy, Paste の方が処理速度が速くなります.
参考までに.
他のアプリからの操作可能にするために COM を実装するのもいいですが,
Winodow API を使用する方がオーバーヘッドが少ないと言えます.
(COM の API も Windows API ?)


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82