■28744 / inTopicNo.5) |
Re[1]: 実行中のタスク列挙 |
□投稿者/ 魔界の仮面弁士 (913回)-(2008/11/30(Sun) 10:40:44)
|
2008/11/30(Sun) 10:59:45 編集(投稿者)
■No28730 (Zesa さん) に返信 > Windowsのタスクマネージャのアプリケーション一覧のように、 > 実行中のタスクを列挙したいのですがうまくいきませんでした。 タスクマネージャと完全に同じというわけでは無いですが、たとえばこんなのとか。
Imports System.Runtime.InteropServices Module Sample Sub Main() Dim wd As Object = Nothing, tasks As Object = Nothing Try wd = CreateObject("Word.Application") tasks = CallByName(wd, "Tasks", vbGet) For i As Integer = 1 To CInt(CallByName(tasks, "Count", vbGet)) Dim task As Object = CallByName(tasks, "Item", vbMethod, i) If CBool(CallByName(task, "Visible", vbGet)) Then Console.WriteLine(CallByName(task, "Name", vbGet)) End If If Marshal.IsComObject(task) Then Marshal.ReleaseComObject(task) End If Next Catch Console.Error.WriteLine("タスクを取得できませんでした。") Finally If tasks IsNot Nothing AndAlso Marshal.IsComObject(tasks) Then Marshal.ReleaseComObject(tasks) End If If wd IsNot Nothing Then Try CallByName(wd, "Quit", vbMethod) Finally If Marshal.IsComObject(wd) Then Marshal.ReleaseComObject(wd) End If End Try End If End Try End Sub End Module
> Vistaではディスクトップのガジェットも http://www.tt.rim.or.jp/~rudyard/gaigo001.html
> タスクマネージャではどのような仕組みで列挙しているのでしょうか? 明確な仕様定義を見た事は無いのですが、動作から想像すると、恐らく、 列挙したプロセスのうち、メインウィンドウが可視状態の物を取り出して、さらにそこから 自分自身(Windows タスク マネージャ)と Windows タスクバーを取り除いているのでは無いかと。
|
|