2013-07-05 53 views
1

我有一個主要用於屏幕截圖的插件。它隨瀏覽器一起加載。現在點擊按鈕出現一個小窗口,通知屏幕截圖已經開始。儘量減少使用C++的插件的瀏覽器窗口

在這裏,我也希望瀏覽器得到最小化。

我嘗試以下方法:

接近1

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

::ShowWindow(parentWH,SW_MINIMIZE); 

它的工作原理!但問題是,我應該如何動態地使用FindWindow的參數。 like,parameter1是'WindowClassName',2是'WindowTitle'。爲不同的瀏覽器

方法2.

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

不起作用!

+0

要查看方法2將工作,啓動間諜++與Visual Studio和看'這個 - > pluginWindowHandle'具有與'Chrome_WidgetWin_1'窗口的祖先。 –

回答

0

這是我最小化瀏覽器窗口的工作。

方法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

要最小化瀏覽器窗口中包含你用來啓動一個屏幕捕獲插件,我建議以下步驟:

  1. 通行證,嵌入網頁的document.title時(JavaScript的)你的插件插件。

  2. 創建您的WINAPI DLL中的EnumWindowsProc回調函數。每次調用該函數時都會給出一個HWND。在這個函數內部,您應該使用GetWindowText函數來檢查瀏覽器中的document.title是否與當前HWND相對應的標題的子字符串。如果是,則可以使用ShowWindow最小化當前的HWND,如果要在捕獲後恢復它,可以存儲HWND並稍後再使用它。如果您找到了匹配,則返回FALSE,否則返回TRUE。

  3. 使用EnumWindows功能通過您的系統上的Windows枚舉。在這裏,你將傳遞一個指向上面回調函數的指針。 EnumWindows將運行,直到回調函數返回FALSE,或者它已經通過所有窗口枚舉。