Здравствуйте,
Например: если я хочу открыть новое окно браузера, кроме моего текущего, браузер, чтобы создать новое окно, но я даже не заметил, что на экране произошло что-то, потому что это новое окно браузера было сокрыто!
Я работаю на Windows 7, и я программирую в AutoIT с Im beginner, но мне не нужны полные исходные коды, я просто хочу получить советы о том, как это сделать.
Для тех, кто этого не знает: SW_HIDE - это "стиль" или "свойство", который может применяться к любому элементу управления/окну/графическому интерфейсу, чтобы он исчезал с экрана, но он все еще существует и может отображаться только в диспетчере задач.
То, что я пробовал: я мог бы сделать программу для поиска в цикле для любых новых окон, созданных в процессе браузера, и когда находит их, чтобы быстро применить к нему стиль SW_HIDE, исчезнуть. Но проблема в том, что этот метод не достаточно быстрый, так как я все еще могу наблюдать за этим новым окном в секунду, и я тоже теряю фокус окна и клавиатуры. Таким образом, единственным решением было бы "взломать" браузер, чтобы он открывал любые новые окна с использованием стиля "SW_HIDE", а не стиля "SW_ACTIVE".
Большое спасибо за любую помощь !, и, пожалуйста, если я вводил в заблуждение, поставил бы любой вопрос, я отвечу очень быстро. Спасибо!
Вы можете создать свою собственную исправленную версию хрома.
В хроме Каждое новое окно создается кодом, подобным этому:
#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;
// };
Тебе нужно:
new Browser(
в коде и установите params.initial_show_state
в SHOW_STATE_MINIMIZED
в том случае, если хотите.