
No.4ベストアンサー
- 回答日時:
取得したい物と違っているかも知れませんが一度下記を試して見て下さい。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim localProcAll As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses()
Dim p As System.Diagnostics.Process
For Each p In localProcAll
If p.MainWindowHandle <> IntPtr.Zero Then
Debug.Print(p.ProcessName & " " & p.MainWindowTitle)
End If
Next
End Sub
No.3
- 回答日時:
>タスクバーアイコンと書いてしまいましたが、ボタンの数です。
>タスクバーに表示されているウィンドウの有無を調べられたらと思っています。
>ちなみに、Windows API の知識は皆無です。
ウィンドウの有無を調べ、それで何をしたいのかが問題かと思うのですが?
API の知識は皆無 との事なので、API を使った方法は何をしたいかにもよりますが、結構複雑な
処理が求められますので、この際あきらめた方がよさそうです。
MS の Word がインストールされている環境なら、Word の Tasks コレクション を使用すれば
API を使用せずとも簡単に(数行程度のプログラムで)取得する事ができます。
いずれにしても、ウィンドウの有無を調べ、それで何をしたいのかによっても違った方法が
あるかも知れませんし、上記の方法で取得しても貴方の思っている処理ができるかは解りません。
(但し、現在の質問内容には答えられていると思います。)
No.2
- 回答日時:
タスクトレイ(タスクバーの通知領域)のアイコンのことでしょうかね?
タスクトレイであれば、↓のような感じです・・・。
Public Class Form1
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hwndParent As Integer, ByVal hwndChildAfter As Integer, ByVal lpszClass As String, ByVal lpszWindow As String) As Integer
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Integer, ByVal MSG As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Const TB_BUTTONCOUNT = &H418
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim count As Integer
count = GetTaskTrayIconCount()
MessageBox.Show(count.ToString(), Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
Private Function GetTaskTrayIconCount() As Integer
Dim hwnd As Integer = 0
hwnd = FindWindowEx(0, 0, "Shell_TrayWnd", vbNullString)
If hwnd Then
hwnd = FindWindowEx(hwnd, 0, "TrayNotifyWnd", vbNullString)
If hwnd Then
hwnd = FindWindowEx(hwnd, 0, "SysPager", vbNullString)
If hwnd Then
hwnd = FindWindowEx(hwnd, 0, "ToolbarWindow32", vbNullString)
If hwnd Then
Return SendMessage(hwnd, TB_BUTTONCOUNT, 0, 0)
End If
End If
End If
End If
Return 0
End Function
End Class
タスクトレイじゃなくて、最小化したウィンドウが並ぶところだと、ちょっと面倒みたいです。
グループ化しているのとしていないのとで、数え方が変わるみたいですし、さらに、XP と Win7 とでは
ウィンドウのクラスも違っているので、Windows のバージョンによってやり方をかえなきゃならないです。
No.1
- 回答日時:
間違っているかもしれませんが。
。。タスクバーに表示されているアイコンの数というのは、現在表示されているウィンドウの数(ただしタスクバーに表示されないものもあるのでそれは除外)なので、
EnumWindow などの API で、現在表示されているウィンドウをすべて調べてタスクバーに表示すると指定されているウィンドウを抜き出せばよいのでは、と思います。で、場合によってはグループ化する、と。
いずれにせよ Windows API の知識が要るでしょう。
この回答への補足
タスクバーアイコンと書いてしまいましたが、ボタンの数です。
タスクバーに表示されているウィンドウの有無を調べられたらと思っています。
ちなみに、Windows API の知識は皆無です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「アイテムは収集されました」...
-
エクセルで作った新しいウイン...
-
ゲームでは結局どっちが良いの?
-
検索の画面がでなくなってしま...
-
皆さん、おはようございます♪ ...
-
ウィンドウスタイルの変更
-
勝手にウィンドウが開いて止ま...
-
「&HFFFF」「&H1A」とは?
-
Excelの上下を固定したい
-
ExcelのBOOKが消えた!
-
非アクティブのウィンドウを最...
-
他アプリケーション’(ウィンド...
-
Tera Termに他のアプリから文字...
-
OutlookでRSSフィードやメモの...
-
UWSCで特定のChromeのタブをア...
-
Vba LongPtrについて教えてくだ...
-
名前を付けて保存のウィンドウ...
-
エクセルでフレーム仕様?
-
グラフの交点の求め方(Excel)
-
メッセージボックスを大きくす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
皆さん、おはようございます♪ ...
-
勝手にウィンドウが開いて止ま...
-
検索の画面がでなくなってしま...
-
ラジオボタンの初期指定
-
Vba LongPtrについて教えてくだ...
-
作成したウインドウのサイズを...
-
[VBA] UserForm を Excel の W...
-
ゲームでは結局どっちが良いの?
-
Excelの上下を固定したい
-
ExcelのBOOKが消えた!
-
「&HFFFF」「&H1A」とは?
-
指定したインアクティブウィン...
-
エクセルで1行目から3行目が消...
-
OutlookでRSSフィードやメモの...
-
UWSCで特定のChromeのタブをア...
-
VBA .Value=.Value ?
-
パソコン関連)何度消してもま...
-
Alt+P,Alt+NをPostmessageで送...
おすすめ情報