2013-11-23 65 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

像你说的那样建造它有多困难? –

相关问题