システムメニューがある場所であるWPFウィンドウの左上隅からアイコンを非表示または削除することについて、多くの質問があることを私は知っています。私はそれらの多くを試しましたが、どれも機能しません。ここに私の要件があります:
- アイコンが消え、空のスペースを取りません (つまり、透明なアイコンはありません)。
- ウィンドウのタイトルは、ウィンドウの左端から直接始まります
- 右上隅の閉じるボタンはまだそこにあり、機能します
- 有効にすると、最小化/最大化ボタンが表示されます (オプション、これはテストしていません)。
- 窓枠全体のカスタム描画なし
- Aero Glass が有効になっている Windows 7 で動作します (Windows 8 のユーザーはいますか?)
- 32 ビットおよび 64 ビット Windows で動作 (x86 および x64 ビルド)
- WPF .NET 4.0 で動作
- Visual Studio のようなデバッガーでなくても機能します (デバッガーでも機能する場合は便利です)。
- Windows XP でも動作するはずです (オプション)
利用可能な回答は基本的に Windows API 関数GetWindowLong
を使用し、SetWindowLong
場合SetWindowPos
によっては拡張ウィンドウ スタイルを追加しWS_EX_DLGMODALFRAME
てSWP_FRAMECHANGED
. 場合によっては、他のスタイルも設定または設定解除されます。
残念ながら、これはまったく機能しません。閉じるボタンのないアイコンを持たないか、両方がまだそこにある可能性があります。しかし、そのコンテンツがすべて 2010 年以前のものであることも注目に値します。以前の .NET または Windows バージョンをターゲットにしており、それ以来失敗しているようです。
システム ダイアログのウィンドウ スタイル (エクスプローラーから) と WPF ウィンドウを Microsoft Spy++ (Visual Studio に含まれる) と既に比較しました。しかし、すべてのフラグを同じに設定しようとすると、アイコンが消えません。これは、他のすべての API 関数や物理を無効にする黒魔術のようなものです。
現在、指定された環境でまだ機能するソリューションを誰かが持っていますか?