* Windows 11 10 のAPI 認識 2025/02/20 此まで 此処のソフトは 個人的な趣味で API GetVersionEx で動作を切り替えるコーディングはしていませんでしたが Windows 8.1 からは 此の API GetVersionEx も非推奨になってしまいました。使用しても Windows 11 10 共に 同じ値を返して区別がつかなくなってしまいました。 此までは Windows 11 Windows 10 の区別なく プログラムを行ってきた訳ですが 大きく言って Windows 11 10 の 違いは タブエクスプローラー と ウィンドウの角丸です。 エクスプローラーを相手にする プログラムは タブとタブで無い物の区別は内部的なコードで吸収したのですが ウィンドウの角丸 は どうしても区別した方が良い気がします。 此処に有る CrnrRund の様に角丸専用なら Windows 11 だけで使用すれば良いのですが CabwcPos の様に 汎用用途で 角丸無し 小さな角丸 を切り替える機能が入っている物は Windows 10 以前で此のメニューが出るのは チェックを 付けなければ良いと言ってもあまり嬉しい物では有りません。 Windows 11 では Enable Windows 10 以前では Disable 若しくはメニュー無し と言うのが妥当だろうと思います。 この際だから Windows 11 10 の区別を付ける API を探したのですがあまり 良い物が有りません。 バージョン ヘルパー関数 の IsWindows10OrGreater も有りましたが Windows 11 10 の区別は付きませんし 使用するのも多少面倒です。 それで 角丸をコントロールする時の API DwmSetWindowAttribute( hWnd, DWMWA_WINDOW_CORNER_PREFERENCE, を Windows 10 以前に使用すると 0x80070057 E_INVALIDARG パラメーターが間違っています が返る事に気が付きました。 DwmGetWindowAttribute( hWnd, DWMWA_WINDOW_CORNER_PREFERENCE, も同じ値を返すので 角丸をコントロールする 用途でなくて単に Windows 11 10 以前を区別するだけなら DwmGetWindowAttribute を使用した方が影響は少なく なるでしょう。hWnd は プログラムマネージャー(Progman) や タスクバー(Shell_TrayWnd) でも OK で ( FindWindow( "Progman", NULL ) FindWindow( "Shell_TrayWnd", NULL ) で 簡単に取得出来ます。) インクルードファイルも "dwmapi.h" dwmapi.lib だけで済みますから 使用するのは随分負荷が軽い物になります。 今回は CabwcPos の為に考えた事ですが 他の プログラム や 他の方が Windows 11 10 の区別を付けたい時には まあ 結構使える方法かなと思います。