Winapi 使用c+最小化插件的浏览器窗口+;
我有一个主要用于屏幕捕获的插件。它与浏览器一起加载。现在,单击按钮时,会出现一个小窗口,通知屏幕捕获已开始 在这里,我还希望浏览器最小化 我尝试了以下方法: 方法1.Winapi 使用c+最小化插件的浏览器窗口+;,winapi,visual-c++,visual-studio-2008,plugins,Winapi,Visual C++,Visual Studio 2008,Plugins,我有一个主要用于屏幕捕获的插件。它与浏览器一起加载。现在,单击按钮时,会出现一个小窗口,通知屏幕捕获已开始 在这里,我还希望浏览器最小化 我尝试了以下方法: 方法1. HWND parentWH = ::GetAncestor(this->pluginWindowHandle,GA_ROOTOWNER); ::ShowWindow(parentWH,SW_MINIMIZE); HWND parentWH=::FindWindow(L“Chrome_WidgetWin_1”,L“test-
HWND parentWH = ::GetAncestor(this->pluginWindowHandle,GA_ROOTOWNER);
::ShowWindow(parentWH,SW_MINIMIZE);
HWND parentWH=::FindWindow(L“Chrome_WidgetWin_1”,L“test-SC1-googlechrome”)代码>
它起作用了!但问题是,我应该如何动态地获取FindWindow的参数。
例如,参数1是“WindowClassName”,参数2是“WindowTitle”。对于不同的浏览器
方法2.
HWND parentWH = ::GetAncestor(this->pluginWindowHandle,GA_ROOTOWNER);
::ShowWindow(parentWH,SW_MINIMIZE);
不行 要最小化包含用于启动屏幕捕获的插件的浏览器窗口,我建议执行以下步骤:
传递将插件嵌入到插件的页面的document.title(JavaScript)
在WinApi dll中创建回调函数。每次调用此函数时,都会给它一个HWND。在该函数中,您应该使用该函数检查浏览器中的document.title是否是与当前HWND对应的标题的子字符串。如果是,则可以使用最小化当前HWND,如果要在捕获后恢复,则可以存储HWND并在以后再次使用。如果找到匹配项,则返回FALSE,否则返回TRUE
使用函数枚举系统上的窗口。在这里,您将传递一个指向上述回调函数的指针。EnumWindows将一直运行,直到回调函数返回FALSE,或者它已枚举了所有窗口
要最小化包含用于启动屏幕捕获的插件的浏览器窗口,我建议执行以下步骤:
传递将插件嵌入到插件的页面的document.title(JavaScript)
在WinApi dll中创建回调函数。每次调用此函数时,都会给它一个HWND。在该函数中,您应该使用该函数检查浏览器中的document.title是否是与当前HWND对应的标题的子字符串。如果是,则可以使用最小化当前HWND,如果要在捕获后恢复,则可以存储HWND并在以后再次使用。如果找到匹配项,则返回FALSE,否则返回TRUE
使用函数枚举系统上的窗口。在这里,您将传递一个指向上述回调函数的指针。EnumWindows将一直运行,直到回调函数返回FALSE,或者它已枚举了所有窗口
以下是我在最小化浏览器窗口方面所做的工作
方法1:
::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()函数直接获得浏览器窗口句柄。以下是使浏览器窗口最小化的方法
方法1:
::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()函数直接获取浏览器窗口句柄。要查看方法2是否有效,启动Visual Studio附带的Spy++并查看this->pluginWindowHandle
是否作为Chrome\u WidgetWin\u 1
窗口的祖先。若要查看方法2是否有效,请启动Visual Studio附带的Spy++并查看this->pluginWindowHandle
是否作为Chrome\u WidgetWin\u 1
窗口的祖先。