タスクマネージャのアプリケーション(タブ)に表示されている
アプリケーションを取得したいのですがどうすれば良いでしょうか?
GetObject("winmgmts:").InstancesOf("Win32_Process")
辺りかと思うのですが、それだとプロセスが表示されてしまします。
なにか絞り込む条件とかあるのでしょうか?
環境はVB6です。
以上、宜しくお願いします。
「GetNextWindow」でウィンドウリストを取得して、
「GetClassLong」とか「GetWindowText」で
アイコンやタイトルを取得出来ます。
ただし、常駐アプリはを省かないと駄目かも。
通ってみたさん ありがとうございます。
GetNextWindowを使用してみて、確かにアプリケーションが含まれる一覧は取得できたのですが、
常駐関係のアプリケーションが沢山出てきてしまいます。
GetWindowRectなどでウィンドウのサイズを取得したりして見ましたが
どうも絞込みができません。
なにか簡単に絞り込む関数(API)などあるのでしょうか?
IsWindowVisibleを使ってみては?
InteRさん レスありがとうございます。
IsWindowVisible使ってみましたが
常駐アプリはほとんどが 表示状態になっていて絞込みが出来ませんでした。
子ウィンドウなどは GetParent で省けるのは分かりましたが・・・
似たような質問
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200510/05100099.txt
Not IsIconic(hWnd)もどうでしょう?
時間があったら検証するのですが・・ごめんなさい
こんな感じでどうでしょう?
フォームにリストボックス必須
Option Explicit
Private Declare Function GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" (ByVal hWnd As Long, ByVal wFlag As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
Private Const GW_OWNER = 4
Private Const GW_HWNDFIRST = 0
Private Const GW_HWNDLAST = 1
Private Const GW_HWNDNEXT = 2
'Private Const GW_HWNDPREV = 3
Private Sub Form_Load()
Dim hwndNext As Long
Dim strBuf As String * 255
Dim hwndLast As Long
Dim i As Long
hwndLast = GetNextWindow(Me.hWnd, GW_HWNDLAST)
hwndNext = GetNextWindow(Me.hWnd, GW_HWNDFIRST)
Do Until hwndNext = hwndLast
If GetWindow(hwndNext, GW_OWNER) = 0 Then
If GetWindowText(hwndNext, strBuf, Len(strBuf)) <> 0 Then
If IsWindowVisible(hwndNext) Then
List1.AddItem Left(strBuf, InStr(1, strBuf, vbNullChar) - 1)
i = i + 1
End If
End If
End If
hwndNext = GetNextWindow(hwndNext, GW_HWNDNEXT)
Loop
End Sub
通ってみたけど、解決してた・・・
InteRさんどーも中途半端ですみません^^;
通ってみたさん、InteRさん、123さん
ありがとうございます。
返事遅くなってすみませんでした。
InteRさんの方法使わせてもらいます。
ありがとうございました。
ツイート | ![]() |