Я запускаю Internet Explorer из своего приложения Win32 как отдельный процесс. Позже я хочу динамически менять фоновый цвет этого Internet Explorer из моего приложения. Я могу получить HWND
из IEXPLORE.EXE
:Как изменить цвет фона iexplore динамически
HWND iexplor = GetForegroundWindow(); //assuming my explorer is active window currently
Итак, теперь с этим HWND
например, есть ли способ я могу изменить цвет фона IEXPLORE
?
Обычные API-интерфейсы Win32 терпят неудачу, потому что их отдельный процесс (доступ запрещен).
Любые идеи или предложения по этой проблеме?
Ниже код не удается, потому что 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);
}
Это вряд ли будет хорошо работать в любом сценарии, что/почему конкретно вы хотите сделать? изменить цвет хрома? - в недавних версиях этого мало, измените цвет отображаемой веб-страницы? - Последнее возможно с COM или MAA. –
Это звучит совершенно нелогично. На некоторых машинах нет IE. Могут быть значительные изменения в способе реализации IE, его иерархии процессов и окон. Надеясь, что вы, возможно, сможете взломать кисть класса, как это, свидетельствует об отсутствии понимания того, как работает Win32. Вы только действительно получите удовлетворение здесь, когда будете корректировать свои ожидания, чтобы быть более реалистичными. –