【发布时间】:2016-12-14 09:45:43
【问题描述】:
我正在从我的 Win32 应用程序作为一个单独的进程启动 Internet Explorer。稍后,我想从我的应用程序中动态更改 Internet Explorer 的背景颜色。我可以得到IEXPLORE.EXE的HWND:
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);
}
【问题讨论】:
-
这在任何情况下都不太可能运作良好,您具体想做什么/为什么?改变铬的颜色? - 在最近的版本中没有太多,改变显示网页的颜色? - 后者可以使用 COM 或 MAA
-
这听起来完全不明智。有些机器可能没有IE。 IE 的实现方式、进程和窗口的层次结构可能存在巨大差异。希望您可以像这样破解类背景画笔,这表明您对 Win32 的工作方式缺乏了解。只有当您将期望调整为更现实时,您才会真正获得满意。
标签: windows internet-explorer winapi mfc win32-process