• ベストアンサー

WMIを使って、あるプログラムで作成されたクラス名を取得できないでしょうか

VBScriptとWMIを使って、あるクラス名を持つクラスが作成されたことを検知するイベントを作成したいと考えています。 Win32_Processクラスでインスタンスが作成されたときに検知などはできるのですが、どうしてもそこからクラス名を取得したり、作成されたサブクラス名を取得することができません。違うクラスを使ったほうが良いでしょうか。 何か良い方法があれば教えていただけないでしょうか。また、マニュアルで表記されているようであれば、その箇所を教えて頂けると助かります。宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

>あつかましいお願いですが、例えばどの言語を使えば可能か教えて頂けないでしょうか。フリーでは難しいものでしょうか。 WindowsAPIを使える言語なら確実です。 WinAPIを使える言語としては、CやC++、VBやDelphiなど。他にもHSPのようにスクリプトでもサポートしているものがあります。 その他の言語についてはわかりません。

papparapa
質問者

お礼

ありがとうございます。早速調べてみます。ご協力ありがとうございました。

その他の回答 (3)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

papparapaさんがいうクラスはウィンドウクラスのことです。 プログラミングをするのであれば、正しい用語を使ってください。 で、ウィンドウクラス名の取得や、ウィンドウクラス名からのウィンドウの特定は、VBScriptとWMIだけでは取得不可能です。 少なからず他の言語を使用する必要があります。

papparapa
質問者

お礼

taka_tetsuさん ありがとうございます。もとから、VBScriptとWMIだけでは無理だったんですね。全然気付いていませんでした。助かりました。 あつかましいお願いですが、例えばどの言語を使えば可能か教えて頂けないでしょうか。フリーでは難しいものでしょうか。

  • bob_n
  • ベストアンサー率35% (610/1732)
回答No.2

ハンドルの数字をカウントアップさせ、クラス名と一致したら、その、数字がハンドルとゆうことがわかるとおもうのですが、ただおなじクラス名があるときがありますが、親子関係をしらべるとか、.... VBScriptとWMIはやってないので、見当違いのことを言っていたらすみません。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

クラスって何のどういったクラスですか? クラスという一般的な言葉では何をしたいかがわかりません。 また、オブジェクト指向であるなら、「クラスが作成された」という言葉自体おかしいです。 「クラスのインスタンスが作成された」ということであれば概念的にはわかりますが、これでも具体的に何をしたいのかはわかりませんので。 ちなみに、papparapaさんが書かれた「インスタンス」についてはWin32_Processって書いてあるんで、Windows上のプロセスということは判断つきますが。

papparapa
質問者

補足

すいません 確かにクラスのインスタンスが作成されたというのが正しいように思います。正確に説明できるか自信がなく、具体的に書かせて頂きます。 アプリケーションを起動するとウィンドウがでて「はい」「いいえ」を選ぶようになっています。 SendKeysを使って「はい」を選択します。 そうしますと、このアプリがある操作を行うのですが、この操作が終わる時間が一定ではありません。 操作終了後、ウィンドウが開いてそこで「1」「2」「3」と選ぶようになっています。 ここでこのウィンドウにタイトルと言いますか、「Internet Exploer」というような文言が表示されず、空白のタイトルなのです。しかし、Winspectorを使ってこのアプリを見たところ、ウィンドウの中にさらにウィンドウがあって(親ウィンドウ、子ウィンドウという感じです)、この子ウィンドウのclass nameが特定の文言になっているんです。 この特定の文言に対応するかたちで、スクリプトを走らせたいと考えています。 うまく説明できているかわかりませんが、引き続き宜しくお願いします。

関連するQ&A