0

編集:詳細情報特定のコンピューター上の特定のアプリケーションに絞り込みました。特定のモニターでフルスクリーンモードで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);
4

2 に答える 2

1

問題が見つかりました。LogMeInをリモートコンピューター管理に使用していますが、ビデオミラードライバーが特定のマシンで問題を引き起こしているようです。ミラードライバをアンインストールして再起動すると、すべてが期待どおりに機能します。

XPの古いコピー(SP3、およびおそらく他のコピーでさえ)でこれが失敗する場合もあります。推奨される更新プログラムをインストールするとこの問題が解決することを、12台以上のワークステーションで確認しました。それぞれに必要な更新の平均があったので、どれがトリックを実行したかを言うのは難しいですが、明らかにそれらの1つが実行しました。更新を有効にしておくもう1つの理由。

于 2011-11-07T00:30:02.293 に答える
0

Windows 7 Professionalシステムは64ビットですか?SetWindowLongのドキュメントによると

この関数は、SetWindowLongPtr関数に置き換えられました。32ビットバージョンと64ビットバージョンの両方のWindowsと互換性のあるコードを作成するには、SetWindowLongPtr関数を使用します。

64ビットシステムでSetWindowLongPtr関数を呼び出すようにコードを変更して、何が起こるかを確認してください。

于 2011-11-05T07:48:30.837 に答える