1

我有一个主要用于截屏的插件。它与浏览器一起加载。现在单击按钮会出现一个小窗口,通知屏幕捕获已开始。

在这里,我还希望浏览器最小化。

我尝试了以下方法:

方法 1。

HWND parentWH = ::FindWindow(L"Chrome_WidgetWin_1", L"test - SC1 - Google Chrome");

::ShowWindow(parentWH,SW_MINIMIZE);

有用!但问题是我应该如何动态获取 FindWindow 的参数。比如,parameter1 是 'WindowClassName' 而 2 是 'WindowTitle'。对于不同的浏览器

方法 2。

HWND parentWH = ::GetAncestor(this->pluginWindowHandle,GA_ROOTOWNER);
::ShowWindow(parentWH,SW_MINIMIZE);

不工作!

4

2 回答 2

1

要最小化包含您用于启动屏幕捕获的插件的浏览器窗口,我建议执行以下步骤:

  1. 将嵌入插件的页面的 document.title (JavaScript) 传递给插件。

  2. 在 WinApi dll 中创建一个EnumWindowsProc回调函数。每次调用此函数时,都会给它一个 HWND。在此函数中,您应该使用GetWindowText函数来检查来自浏览器的 document.title 是否是与当前 HWND 对应的标题的子字符串。如果是,那么您可以使用ShowWindow最小化当前的 HWND ,如果您想在捕获后恢复它,您可以存储 HWND 并稍后再次使用它。如果找到匹配项,则返回 FALSE,否则返回 TRUE。

  3. 使用EnumWindows函数枚举系统上的窗口。为此,您将传递一个指向上述回调函数的指针。EnumWindows 将一直运行,直到回调函数返回 FALSE,或者它已经枚举了所有窗口。

于 2013-07-11T13:31:47.753 回答
0

这是最小化浏览器窗口的方法。

方法一:

::ShowWindow(pluginWindowHandle,SW_HIDE);
parentWH = ::GetForegroundWindow(); //for obtaining parent window handle
::ShowWindow(parentWH,SW_MINIMIZE);

方法 2:在显示插件窗口之前,我正在获取浏览器窗口句柄

void NotificationWindow::showNotification()
{
    parentWH = ::GetForegroundWindow();
    ::ShowWindow(parentWH,SW_MINIMIZE);
    this->close();
    this->displayWindow();
}

这里,直到 displayWindow() 函数没有被调用,我们可以通过 GetForegroundWindow() 函数直接获取浏览器窗口句柄。

于 2013-07-27T08:45:05.673 回答