DOBON.NETプログラミング道掲示板

■34391 / 3階層)  プロセスからウインドウを取得
□投稿者/ 魔界の仮面弁士 大御所(1259回)-(2019/11/14(Thu) 20:31:01)
  • アイコンNo34390に返信(/400さんの記事)
    > プロセスの取得はManagementObjectCollectionからプロセスIDを取得して
    WMI からのアプローチなのですね。
    使っているのは、root\CIMV2 名前空間の Win32_Process クラスあたりでしょうか。


    > そのプロセスIDからGetProcessByIdでプロセスを取得しています
    新しいプロセスの起動等を検知するために、__InstanceCreationEvent / __InstanceDeletionEvent を
    仕掛けているといった事情があるのなら、WMI を使う価値はあるかもしれませんが、
    単に Process クラスのインスタンスを得ることが目的なのだとしたら、プロセスの列挙は
    WMI を経由させずとも、最初から Process.GetProcesses を使った方が手っ取り早い気がします。


    ただ、最終的に必要なのはウィンドウハンドル(あるいはそのタイトル?)のようなので、その場合、
    前回の回答で述べた EnumWindows + GetWindowThreadProcessId で探すことになりそうです。
    ここの Tips 集にある [プロセス]>[ウィンドウのタイトルからプロセスを探す] でも使われていますね。


    とはいっても、最初の質問で
    >>> ウインドウの一覧を先に取得してそれをプロセスで束ねてく方法は分かるのですが、
    との事ですので、恐らくその方法は既にご存知なのかと思います。

    ウィンドウ数が膨大で列挙が遅いというのであれば、列挙完了まで待たせるのではなく、
    探索はワーカースレッドに任せ、対象プロセスのウィンドウだったものが
    逐次通知されてくるようにするのはどうでしょうか。
違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: プロセスからウインドウを取得 //400 →Re[4]: プロセスからウインドウを取得 /魔界の仮面弁士
 
上記関連ツリー

Nomalアイコン プロセスからウインドウを取得 / /400 (19/11/11(Mon) 23:26) #34379
Nomalアイコン Re[1]: プロセスからウインドウを取得 / 魔界の仮面弁士 (19/11/12(Tue) 10:28) #34381
  └Nomalアイコン Re[2]: プロセスからウインドウを取得 / /400 (19/11/14(Thu) 18:15) #34390
    └Nomalアイコン プロセスからウインドウを取得 / 魔界の仮面弁士 (19/11/14(Thu) 20:31) #34391 ←Now
      └Nomalアイコン Re[4]: プロセスからウインドウを取得 / 魔界の仮面弁士 (19/11/14(Thu) 21:47) #34392

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -