2013-11-23 97 views
0

你好,使瀏覽器打開SW_HIDE風格的新窗口?

  • 我想以某種方式(從一開始的窗戶有SW_HIDE風格創建時)強制Firefox或Chrome瀏覽器中打開瀏覽器窗口隱藏

例如: 如果我想打開一個新的瀏覽器窗口,除了我目前的一個,瀏覽器中創建一個新的窗口,但我對沒有注意到事情發生在屏幕上,因爲這新的瀏覽器窗口被隱藏了!

我在Windows 7上運行,我在AutoIT中編程,因爲我的初學者,但我不想要任何完整的源代碼,我只是想要一些建議,如何做到這一點。

誰不知道:SW_HIDE是一種'風格'或'屬性',可以應用於任何控件/窗口/ GUI,使其從屏幕上消失,但仍然存在,只能看到任務管理器。

我曾嘗試: 我可以做一個程序在由瀏覽器進程創建任何新窗口循環進行搜索,發現一個,當到SW_HIDE風格迅速適用於它,消失。但問題是這種方法速度不夠快,因爲我仍然可以觀察到一秒鐘的新窗口,並且我也忽略了窗口和鍵盤焦點。所以唯一的解決方案就是'瀏覽'瀏覽器,使其以'SW_HIDE'風格打開任何新窗口,而不是'SW_ACTIVE'風格。

謝謝你的任何幫助!如果我誤導任何問題請給我,我會很快回復。Thankyou!

回答

1

您可以構建自己的補丁版本的鉻。

在鉻每一個新的窗口,通過這樣的代碼創建一個:

#include "chrome/browser/ui/browser.h" 
#include "chrome/browser/ui/browser_window.h" 
#include "content/public/browser/navigation_controller.h" 

Browser* CreateBrowser(Profile* profile) { 
    Browser::CreateParams browser_params(Browser::TYPE_TABBED 
     profile, 
     chrome::HOST_DESKTOP_TYPE_FIRST); 
    browser_params.initial_show_state = ui::SHOW_STATE_NORMAL; 
    Browser* browser = new Browser(browser_params); 
    browser->window()->Show(); 
    return browser; 
} 

// Simplified types definitions: 
// class Profile; 
// 
// namespace ui { 
// 
// enum WindowShowState { 
// SHOW_STATE_DEFAULT = 0, 
// SHOW_STATE_NORMAL  = 1, 
// SHOW_STATE_MINIMIZED = 2, 
// SHOW_STATE_MAXIMIZED = 3, 
// SHOW_STATE_INACTIVE = 4, 
// SHOW_STATE_FULLSCREEN = 5, 
// SHOW_STATE_DETACHED = 6, 
// SHOW_STATE_END  = 7 
// }; 
// 
// } // namespace ui 
// 
// namespace chrome { 
// 
// enum HostDestkopType { 
// HOST_DESKTOP_TYPE_FIRST = 0, 
// HOST_DESKTOP_TYPE_NATIVE = HOST_DESTKOP_TYPE_FIRST, 
// #if defined(OS_CHROMEOS) 
// HOST_DESKTOP_TYPE_ASH = HOST_DESKTOP_TYPE_NATIVE, 
// #else 
// HOST_DESKTOP_TYPE_ASH, 
// #endif 
// HOST_DESKTOP_TYPE_COUNT 
// }; 
// 
// } // namespace chrome 
// 
// class Browser { 
// public: 
// enum Type { 
//  TYPE_TABBED, 
//  TYPE_POPUP 
// }; 
// struct CreateParams { 
//  CreateParams(Profile* profile, chrome::HostDesktopType host_desktop_type); 
//  CreateParams(Type type, Profile* profile, chrome::HostDesktopType host_desktop_type); 
//  static CreateParams CreateForApp(Type type, const std::string& app_name, 
//   const gfx::Rect& window_bounds, Profile* profile, 
//   chrome::HostDesktopType host_desktop_type); 
//  static CreateParams CreateForDevTools(Profile* profile, 
//   chrome::HostDesktopType host_desktop_type); 
//  Type type; 
//  Profile* profile; 
//  chrome::HostDesktopType host_desktop_type; 
//  std::string app_name; 
//  gfx::Rect initial_bounds; 
//  ui::WindowShowState initial_show_state; 
//  bool is_session_restore; 
//  BrowserWindow* window; 
// }; 
// 
// explicit Browser(CreateParams params); 
// BrowserWindow* window() const; 
// }; 

您需要:

+0

聽起來似乎合理!我現在就開始工作!一個問題是,如果我像你說的那樣構建它,即使瀏覽器創建的彈出窗口也能工作嗎? –

+0

每個彈出窗口都以相同的代碼打開。 –

+0

像你說的那樣建造它有多困難? –

相關問題