User manual - DT-950コモンコントロール開発ガイドver.1.00(2004年7月5日)
・ダイアログウィンドウの有無の判定
ダイアログウィンドウは EnumWindows 関数で検索します。この関数は使用アプリケーションのダイアロ
グウィンドウがあった場合にはダイアログウィンドウのウィンドウハンドルを返します。
EnumWindows 関数は使用アプリケーションのみではなく、全てのウィンドウ(子ウィンドウは除く)に
対して検索します。アプリケーションで表示されている場合に前面に出すダイアログウィンドウは使用
アプリケーションのウィンドウ①[1]と②[1]の場合です。
①[1]の検索
上図の様にダイアログウィンドウの親ウィンドウをたどっていくとアプリケーションの初めで作成し
たメインウィンドウがあり、ダイアログウィンドウとメインウィンドウに関係(孫、ひ孫など)がある
ことがわかります。
①[2]のように使用アプリケーション以外のダイアログウィンドウは、親ウィンドウをたどっていって
も使用アプリケーションのメインウィンドウと関係がありません。
上の関係を利用して、検索対象のウィンドウの親ウィンドウをたどり親ウィンドウのハンドルがアプリ
ケーション作成時のメインウィンドウのハンドルと一致した場合には、使用中のアプリケーション表示
のダイアログウィンドウがあると判別します。
サンプルアプリケーションでは、検索対象のウィンドウから 10 世代分の親ウィンドウまでをたどって
います。
②[1]の検索
親ウィンドウを指定しないメッセージボックスなど親ウィンドウのないダイアログウィンドウもあり
ます。親ウィンドウがないもので、使用中アプリケーション所有かどうかを判別するにはプロセスID
を使用します。検索対象のウィンドウのプロセスIDとメインウィンドウのプロセスIDを比較し、一
致した場合は使用中のアプリケーションのウィンドウと判断します。
2-8