編集:詳細情報特定のコンピューター上の特定のアプリケーションに絞り込みました。特定のモニターでフルスクリーンモードでChromeを起動しようとしています。これは、私がテストしたほとんどのシステムで完全に機能しますが、Windows 7 Pro 32ビットを実行しているコンピューターのセットに遭遇しました。これらのコンピューターは正しく移動およびサイズ変更されていますが、境界線とボタンはそのままです。
Chromeウィンドウはすべて単一のChromeプロセスで生成され、そのライフサイクルは不安定であることに気付きましたが、各Chromeインスタンスを独自の親プロセスでそのように起動し続ける個別のデータディレクトリを使用してこれを回避することができました。Chromeは、フルスクリーンで1セットのコンピューターでのみ起動する際に問題が発生する唯一のアプリケーションのようです。たとえば、calc.exeを実行すると、テストしたすべてのシステムで問題なく境界線が最大化および削除されます。各システムで実行されているchromeのバージョンが同じであることを確認しました。誰かがこの問題、または問題をさらにトラブルシューティングする方法についてより多くの洞察を持っていれば、私は本当に感謝します。
SetWindowLongを使用してフルスクリーンモードでアプリケーションを実行しようとしていますが、最新のコンピューターを試してみるまではうまく機能していました。私は基本的にこの質問で参照されているコードを使用しています:ウィンドウの境界線を削除しますか?
これは、私のラップトップ(Windows 7 Ultimate)とテスト済みのいくつかのワークボックス(Windows 7 POS Embedded)の両方で正常に機能しますが、職場の別のコンピューター(Windows 7 Professional)では機能しません。SetWindowLong呼び出しは、機能しているはずであることを示す期待値を返します。SetWindowPosの呼び出しは、ウィンドウのサイズを正しく変更しているので正常に機能しますが、境界線とボタンはまだあります。SetWindowLongへの呼び出しがまったくなかったかのように機能しています。現時点ではアイデアがないので、助けていただければ幸いです。
編集:これが午前1時の赤い目の栄光のコードです。リンクされた質問のほとんど直接のコピー。
int lStyle = GetWindowLong(process.MainWindowHandle, GWL_STYLE);
lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU);
_logger.Debug(String.Format("Style: {0}", lStyle)); // 369295360
var swlResult = SetWindowLong(process.MainWindowHandle, GWL_STYLE, lStyle);
_logger.Debug(String.Format("SetWindowLong: {0}", swlResult)); // 382664704
int lExStyle = GetWindowLong(process.MainWindowHandle, GWL_EXSTYLE);
lExStyle &= ~(WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE | WS_EX_STATICEDGE);
SetWindowLong(process.MainWindowHandle, GWL_EXSTYLE, lExStyle);
Screen screen = GetDisplay(display);
return SetWindowPos(
process.MainWindowHandle,
HWND_TOPMOST,
screen.WorkingArea.Left,
screen.WorkingArea.Top,
screen.WorkingArea.Width,
screen.WorkingArea.Height,
SetWindowPosFlags.SWP_FRAMECHANGED);