結局公式情報としてのスタートメニューの取り方はわからなかったのですが、Google百度参りと試行錯誤の上なんとかそれっぽいことができるようになりました。
以下知見です。
- Win10 スタートメニューはGetForegroundWindow()か、その結果からのGetNextWindow()ループで取れました。
- ただし、スタートメニュー表示中にスタートメニューがフォアグラウンドかというと、なんとCortanaがフォアグラウンドになっていてスタートメニューはその次になっています。ただし常にその順番かというと、スタートメニュー上の入力欄がアクティブになった場合などに入れ替わりがあります。
二者はウィンドウクラス名では区別が付かず、ウィンドウキャプションがCortanaだと"Cortana"になっています。スタートメニューはウィンドウキャプションが"スタート"。各国語版Windowsではどうなんでしょうね。
- Metroスタイルのウィンドウ(スタートメニューやWin8ストアアプリ、UWPアプリ)は、非表示状態でもIsWindowVisibleがしゃあしゃあとtrueを返してきます。旧来のウィンドウシステムとは別の仕組みで表示非表示を切り換えているのです。新方式で非表示にされているウィンドウのことをファントムウィンドウPhantom Windowと呼び、DwmGetWindowAttribute関数で機能番号14番(DWMWA_CLOAKED)を呼ぶことで判別できます。
以上の知見を念頭にごにょごにょやることで取得できます。
本当にごにょごにょなので次のWindowsが出たら盛大にこけるかもしれません。わかりません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。