まだできた訳ではありませんが、
途中まで調べたことについて記載しようと思います。
>何方か、タスクバーのタスクのウインドウハンドルを
>順番に取得する方法をご教授お願いします
まず「タスクバーのウィンドウハンドルの取得方法」について調べましたら
↓のWEBサイトページがありました。
(
http://homepage2.nifty.com/DSS/PT/HTML/Win/TaskTray/TaskTrayHandle.htm)
しかし上記の方法で試したんですが、上手くいかなくて
もっと調べましたら、Visual Stduioに付属しているツール「Spy++」
を用いてクラス名を調べているサイトがありましたので
(
http://bbs.wankuma.com/index.cgi?mode=al2&namber=8391&KLOG=8)
(↑C#とVBの質問板ですが・・・^^;)
Spy++で調べてみると、タスクバーの親子関係の箇所で
「ToolbarWindow32」というクラス名があったので
ググったら↓のWEBサイトページがありました。
(
http://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html)
上記のWEBサイトには、タスクバーの歴史やタスクバーの親子関係、
タスクバーのどこの部分が、どういうクラス名なのかも
詳しく記載してあるので参考にしてみるといいかもしれません。
>指定した値以降のウィンドウハンドルを検索・・・みたいなことができたようなそうでもないような。
>なんて言えばいいのかわかりませんが。
misoさんの記載どおりにFindWindowEx命令で
NULLが戻ってくるまでループするようなスクリプトを作成したのですが、
なんか指定したクラス名に該当するウィンドウハンドルを
一括でしているような気がします。
この問題については、継続して調べていこうと思います。
↓に確認用に作成したスクリプトを載せておきます。
// 外部DLLを指定する
#uselib "user32.dll"
// 外部DLL呼び出し関数を登録する
#cfunc global GetDesktopWindow "GetDesktopWindow"
#cfunc global FindWindow "FindWindowA" var, var
#cfunc global FindWindowEx "FindWindowExA" int, int, var, var
#cfunc global GetWindowText "GetWindowTextA" int, str, int
// 定数の宣言
#const NULL 0
// グローバル変数宣言
g_hDesktop = NULL
g_hWndTaskBar = NULL
g_hWndTaskTray = NULL
g_hWndReBar = NULL
g_hWndMsTask = NULL
g_hWndToolBar = NULL
g_nCount = NULL
g_nResult = NULL
g_strTaskBar = "Shell_TrayWnd"
g_strTaskTray = "TrayNotifyWnd"
g_strReBar = "ReBarWindow32"
g_strMsTask = "MSTaskSwWClass"
g_strToolBar = "ToolbarWindow32"
g_strNull = NULL
g_strText = ""
dim g_hWndList, 128
// HSPエントリーポインタ
*HspMain
// デスクトップのウィンドウハンドルを取得する
g_hDesktop = GetDesktopWindow()
mes "デスクトップ:" + g_hDesktop
// タスクバーのウィンドウハンドルを取得する
g_hWndTaskBar = FindWindow(g_strTaskBar, g_strNull)
mes "タスクバー:" + g_hWndTaskBar
// タスクトレイのウィンドウハンドルを取得する
g_hWndTaskTray = FindWindowEx(g_hWndTaskBar, NULL, g_strTaskTray, g_strNull)
mes "タスクトレイ:" + g_hWndTaskTray
// リバーコントロール(ReBarWindow32)のウィンドウハンドルを取得する
g_hWndReBar = FindWindowEx(g_hWndTaskBar, NULL, g_strReBar, g_strNull)
mes "リバーコントロール:" + g_hWndReBar
// マイクロソフトタスク(MSTaskSwWClass)のウィンドウハンドルを取得する
g_hWndMsTask = FindWindowEx(g_hWndReBar, NULL, g_strMsTask, g_strNull)
mes "マイクロソフトタスク:" + g_hWndMsTask
// ツールバーのウィンドウハンドルを取得する
g_hWndToolBar = FindWindowEx(g_hWndMsTask, NULL, g_strToolBar, g_strNull)
mes "ツールバー:" + g_hWndToolBar
// ウィンドウのタイトルを取得する
g_nResult = GetWindowText(g_hWndToolBar, g_strText, 1024)
// ウィンドウのタイトルを取得できた場合
if(g_nResult >= 1) {
mes "ウィンドウのタイトル:" + g_strText
// ウィンドウのタイトルを取得できなかった場合
} else {
mes "ウィンドウのタイトルを取得できませんでした"
}
// 該当するウィンドウが無くなるまでループする
do
// ウィンドウハンドルを列挙する
g_hWndList.g_nWindowCount = FindWindowEx(g_hDesktop, g_hWndList(g_nCount), g_strToolBar, g_strNull)
mes "ウィンドウリスト" + g_nCount + ":" + g_hWndList(g_nCount)
// ウィンドウカウントをカウントアップする
g_nCount = g_nCount + 1
until g_hWndList(g_nCount - 1) != NULL
stop