Заставить браузер открывать новые окна в стиле SW_HIDE?

0

Здравствуйте,

  • Я хочу как-то заставить браузер Firefox или Chrome открывать скрытые окна браузера (окна имеют стиль SW_HIDE с самого начала, когда они создаются).

Например: если я хочу открыть новое окно браузера, кроме моего текущего, браузер, чтобы создать новое окно, но я даже не заметил, что на экране произошло что-то, потому что это новое окно браузера было сокрыто!

Я работаю на Windows 7, и я программирую в AutoIT с Im beginner, но мне не нужны полные исходные коды, я просто хочу получить советы о том, как это сделать.

Для тех, кто этого не знает: SW_HIDE - это "стиль" или "свойство", который может применяться к любому элементу управления/окну/графическому интерфейсу, чтобы он исчезал с экрана, но он все еще существует и может отображаться только в диспетчере задач.

То, что я пробовал: я мог бы сделать программу для поиска в цикле для любых новых окон, созданных в процессе браузера, и когда находит их, чтобы быстро применить к нему стиль SW_HIDE, исчезнуть. Но проблема в том, что этот метод не достаточно быстрый, так как я все еще могу наблюдать за этим новым окном в секунду, и я тоже теряю фокус окна и клавиатуры. Таким образом, единственным решением было бы "взломать" браузер, чтобы он открывал любые новые окна с использованием стиля "SW_HIDE", а не стиля "SW_ACTIVE".

Большое спасибо за любую помощь !, и, пожалуйста, если я вводил в заблуждение, поставил бы любой вопрос, я отвечу очень быстро. Спасибо!

Теги:
browser
google-chrome
hidden
hide

1 ответ

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
    Каждое всплывающее окно открывается одним и тем же кодом.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню