gpt4 book ai didi

c++ - 让浏览器打开带有 SW_HIDE 样式的新窗口?

转载 作者:行者123 更新时间:2023-11-28 07:16:27 28 4
gpt4 key购买 nike

您好,

  • 我想以某种方式强制 Firefox 或 Chrome 浏览器打开浏览器窗口隐藏(窗口在创建时从一开始就具有 SW_HIDE 样式)。

例如: 如果我想在当前浏览器窗口之外打开一个新的浏览器窗口,浏览器会创建一个新窗口,但我什至没有注意到屏幕上发生了什么,因为那个新浏览器窗口是隐藏的!

我在 Windows 7 上操作,并且我在 AutoIT 中编程,因为我是初学者,但我不想要任何完整的源代码,我只想要一些关于如何完成它的建议。

对于不知道的人:SW_HIDE 是一种“样式”或“属性”,可以应用于任何控件/窗口/GUI 以使其从屏幕上消失,但仍然存在并且只能在任务管理器中看到.

我尝试过的:我可以制作一个程序来循环搜索浏览器进程创建的任何新窗口,并在找到一个时快速应用 SW_HIDE 样式,使其消失。但问题是这种方法不够快,因为我仍然可以观察那个新窗口一秒钟,而且我也失去了窗口和键盘焦点。因此,唯一的解决方案是“破解”浏览器,使其以“SW_HIDE”样式而不是“SW_ACTIVE”样式打开任何新窗口。

非常感谢您的帮助!如果我误导了任何问题,我会尽快回复。谢谢!

最佳答案

您可以构建自己的 Chromium 补丁版本。

在 chromium 中,每个新窗口都是由这样的代码创建的:

#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;
// };

你需要:

关于c++ - 让浏览器打开带有 SW_HIDE 样式的新窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20161646/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com