Win32アプリケーションからInternet Explorerを別のプロセスとして起動します。後で、このInternet Exploreの背景色を私のアプリケーションから動的に変更したいと思います。私はIEXPLORE.EXE
のHWND
を取得することができます:iexploreの背景色を動的に変更する方法
HWND iexplor = GetForegroundWindow(); //assuming my explorer is active window currently
だから、今このHWND
インスタンスと、私はIEXPLORE
の背景色を変更することができます方法はありますか?
通常のWin32 APIは、別のプロセス(アクセスが拒否されたため)に失敗します。
この問題のアイデアや提案はありますか? IEは、独立したプロセスであるため、コードの下
が失敗した:
HWND activeWindow = GetForegroundWindow();
if (activeWindow)
{
HBRUSH brush = CreateSolidBrush(RGB(0, 0, 0));
SetClassLongPtr(activeWindow, GCLP_HBRBACKGROUND, (LONG)brush);
InvalidateRect(activeWindow, NULL, TRUE);
int redraw = ::UpdateWindow(activeWindow);
}
これは、どのようなシナリオでうまくいくとは考えにくいのですか。具体的にはどうしますか?クロム色を変える?最近のバージョンでは表示されているWebページの色を変更することはあまりありません。 - 後者はCOMまたはMAAで可能です –
これは完全に不都合なアドバイスです。いくつかのマシンはIEを持っていないかもしれません。 IEが実装される方法、プロセスとウィンドウの階層構造に大きなばらつきが存在する可能性があります。そのようなクラスのバックグラウンドブラシをハックすることができたら、Win32の仕組みに感謝しません。より現実的になるようにあなたの期待を調整するとき、あなたはここで本当に満足するでしょう。 –