Вопрос или проблема
Я пользователь QTTabBar, который позволяет пользователям Windows использовать вкладочноеBrowsing в проводнике Windows. При использовании различных программ с кнопками ‘Открыть в проводнике Windows’ появляется новое окно проводника Windows, что я хочу предотвратить.
В QTTabBar у нас, как правило, есть два варианта при открытии каталога по щелчку правой кнопкой мыши:
- Открыть в новой вкладке
- Открыть в новом окне
Я пытаюсь выяснить, происходит ли открытие нового окна из внешних приложений через Windows или QTTabBar, и может ли QTTabBar переопределить это поведение, открывая ссылку в новой вкладке вместо нового окна. Вся причина в том, что открытие ссылок проводника Windows в новых окнах нарушает цель вкладочного просмотра.
Я попытался попросить о помощи на форумах QTTabBar, но сайт, похоже, устарел, и никто не может там размещать сообщения.
Использую QTTabBar версии 1038 на Windows 10 Pro.
Да, есть настройки для открытия папок в новой вкладке:
- Окно -> Список захвата и исключений – включить захват окна, также через
ShellExecuteHooks
- Я также рекомендую оставить Вкладка -> Активировать новую вкладку включенной, так как без этого она, похоже, работает с ошибками.
Смотрите документацию и важное примечание там:
“Захват” означает предотвращение открытия окна папки, вместо этого открывается вкладка, представляющая папку. В настоящее время QTTabBar может захватывать окна папок в следующих случаях:
- Когда папка открывается из меню “Пуск”, списка задач кнопок и рабочего стола.
- Когда путь к папке запускается другими приложениями с использованием ShellExecute/ShellExecuteEx API.
- Нажата клавиша Win + E. (Windows7/8)
Обратите внимание, что окно папки, открытое путем создания нового процесса explorer.exe, не будет захвачено.
Это означает, что поддержка ограничена. Ситуации, когда я заметил, что открываются новые окна:
- открытие нестандартных местоположений, таких как панель управления или корзина
- запуск папок из различных приложений, которые, похоже, используют разные API или запускают новый процесс
explorer.exe
Ответ или решение
Чтобы предотвратить открытие новых окон в QTTabBar на Windows, необходимо понимать, как работает данное приложение и как оно взаимодействует с системными вызовами Windows. QTTabBar — это надстройка для Проводника Windows, которая предоставляет возможность вкладочного просмотра, но его функционал имеет определенные ограничения, когда дело касается захвата новых окон.
1. Настройка захвата окон
Чтобы QTTabBar мог открывать папки в новых вкладках вместо создания новых окон, выполните следующие шаги:
- Перейдите в меню Window и выберите Capturing and Exclusion list.
- Убедитесь, что опция Enable window capture активирована.
- Здесь же включите опцию ShellExecuteHooks, чтобы обеспечить захват запросов на открытие папок, поступающих из других приложений.
Это позволит QTTabBar перехватывать команды на открытие папок, которые отправляются через системные вызовы, такие как ShellExecute или ShellExecuteEx.
2. Дополнительные настройки
Настройка Tab -> Activate new tab также должна быть включена. Это способствует более плавной работе приложения, так как в случае отключения этой опции возможно возникновение ошибок, которые могут приводить к созданию новых окон вместо вкладок.
3. Ограничения
Важно понимать, что QTTabBar не может захватывать все сценарии открытия новых окон. Например, следующее не будет работать:
- Открытие стандартных мест, таких как Панель управления или Корзина, часто требует создания нового процесса explorer.exe, который QTTabBar не сможет перехватить.
- Некоторые программы могут использовать другие API для вызова проводника, что также может приводить к открытию новых окон.
4. Повышение совместимости
Если вы заметили, что новые окна открываются из конкретных приложений, попробуйте проверить настройки этих приложений. Возможно, там есть возможность изменять поведение открытия папок.
5. Заключение
QtTabBar предоставляет пользователям замечательную возможность работы с вкладками в Проводнике Windows, однако, из-за некоторых ограничений Windows, полное отсутствие новых окон может быть невозможно в каждой ситуации. С достаточной конфигурацией и пониманием того, как QTTabBar взаимодействует с системными вызовами, вы сможете максимально повысить его эффективность и избежать ненужного открытия новых окон.
Для получения дополнительной информации и деталей, рекомендуем ознакомиться с официальной документацией QTTabBar, которая может помочь вам глубже понять возможности данного инструмента.