tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルタスクマネージャ
記事No6963
投稿日: 2008/02/09(Sat) 07:43
投稿者ゆうき
ゆうきです。お久しぶりです。

現在、タスクマネージャのようなソフトを作っているのですが、
プロセスを取得すると、すべてのプロセスをリストに表示してしまいます。
アプリケーションのリストと、プロセスのリストに分けたいのですが、
できないのでしょうか。

'プロセスを取得
Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
'1つずつ出す
Dim p As System.Diagnostics.Process
For Each p In ps
    ListBox1.Items.Add(p.ProcessName)
Next p

すべてのプロセスを上記で取得しています。
ですが、アプリケーションを終了したいときに、プロセスのリストから選択すると、
使い勝手が悪いのです。

よろしくお願いします。

[ツリー表示へ]
タイトルRe: タスクマネージャ
記事No6966
投稿日: 2008/02/10(Sun) 08:26
投稿者花ちゃん
> アプリケーションのリストと、プロセスのリストに分けたいのですが、
> できないのでしょうか。

>アプリケーションを終了したいときに、プロセスのリストから選択すると、
>使い勝手が悪いのです。

上記が目的なら下記でもいいのでは。

Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
'1つずつ出す
Dim p As System.Diagnostics.Process
For Each p In ps
   If p.MainWindowHandle <> IntPtr.Zero Then
      Console.WriteLine("{0} : {1} ", p.ProcessName, p.MainWindowTitle)
   End If
Next p

[ツリー表示へ]
タイトルRe^2: タスクマネージャ
記事No6967
投稿日: 2008/02/10(Sun) 09:07
投稿者ゆうき
ゆうきです。

花ちゃんさん、回答ありがとうございます。
ウィンドウがあれば出力する方法ですね。

予定通り実装することができました!
ありがとうございます。

これからもよろしくお願いします。

[ツリー表示へ]
タイトルRe^3: タスクマネージャ
記事No6969
投稿日: 2008/02/10(Sun) 10:38
投稿者ゆうき
ゆうきです。

一覧を表示できましたが、タイマーを使ってプロセスを検知しているので、
項目を選択しても、
ListView1.Clear
で毎回項目を書き換えているので選択が解除されてしまいます。

1.ListViewの項目が書き換わっても選択を保持する方法
2.プロセスが変更されたのを検知する方法

どちらかがわかれば処理を実装できます。
ご教授、お願いします。

[ツリー表示へ]
タイトルRe^4: タスクマネージャ
記事No6970
投稿日: 2008/02/10(Sun) 12:12
投稿者魔界の仮面弁士
> 1.ListViewの項目が書き換わっても選択を保持する方法
全体を書き換えるのではなく、変更のあった部分だけを書き換えるようにするとか。

> 2.プロセスが変更されたのを検知する方法
Win32_Process クラスのイベント通知を試してみては如何でしょう。

[ツリー表示へ]
タイトルRe^5: タスクマネージャ
記事No6999
投稿日: 2008/02/12(Tue) 16:29
投稿者ゆうき
ゆうきです。
魔界の仮面弁士さん、回答ありがとうございます。

> > 1.ListViewの項目が書き換わっても選択を保持する方法
> 全体を書き換えるのではなく、変更のあった部分だけを書き換えるようにするとか。

この方法でやることにしました。

どうもありがとうございました。

[ツリー表示へ]