20

В Windows XP с использованием TweakUI я мог включить опцию, чтобы при наведении курсора мыши на неактивное окно оно становилось активным. Существует также другая отдельная опция, так что если окно становится активным, оно автоматически становится самым верхним окном.

Мне нравится включать первое, но не второе.

Для Windows 7 я не смог найти то же самое. Вместо этого я нашел вариант внутри окон, который делает нечто подобное. Если я наведу указатель мыши на неактивное окно, мне придется некоторое время навести на него курсор, прежде чем он станет активным. Это не мгновенно. Вторая проблема состоит в том, что, как только он становится активным, он автоматически становится самым верхним окном, покрывая другие вещи, которые я не хочу покрывать.

В итоге, это то, что я хочу в Windows 7:

  1. Когда моя мышь проходит по неактивному окну, она немедленно делает его активным окном.

  2. Когда оно активирует окно, оно не поднимает его над другими окнами.

4 ответа4

12

Спасибо Фоши за ваш ответ. Поскольку я наткнулся на эту ссылку в поиске Google, я собираюсь заполнить часть отсутствующей здесь информации и дать полное пошаговое руководство для нее:

Чтобы заставить X-mouse работать с Vanilla Windows 7, установите:

  1. Откройте панель управления
  2. Выберите "Простота доступа"
  3. Выберите "Изменить работу мыши"
  4. Установите флажок рядом с «Активировать окно, наведя на него курсор мыши» и нажмите "ОК".
  5. Открыть регедит
  6. Найдите HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferenceMask - измените только первый байт, вам нужно вычесть шестнадцатеричное 40 из значения, которое есть (например, DF становится 9F) - это отключает автоподнятие при активации
  7. Найдите HKEY_CURRENT_USER\Control Panel\Desktop\ActiveWndTrkTimeout - измените его значение на что-то маленькое. Меньшие значения затруднят использование плавающих временных окон (таких как виджет области уведомлений панели задач), поскольку они исчезают, когда вы переходите к чему-то другому, но более низкие значения также улучшают скорость отклика. Вы можете начать с 250 мс и настроить его оттуда.
  8. Выйти, войти снова, и вуаля, ...

Шаги 1-4 были упомянуты в вопросе мимоходом, но не перечислены.

Шаги 5-8 - именно то, что сказал Фоши .

11

Вместо ручного взлома реестра, попробуйте использовать системные вызовы из SystemParametersInfo, особенно SPI_GETACTIVEWINDOWTRACKING , SPI_GETACTIVEWNDTRKZORDER , SPI_GETACTIVEWNDTRKTIMEOUT . Использование этих звонков также избавляет вас от необходимости выходить из системы, чтобы применить настройки. Я бы порекомендовал использовать элементы управления X-Mouse, которые их реализуют.

Элементы управления X-Mouse: инструмент для включения или отключения активного отслеживания окна, повышения, а также задержки в миллисекундах. Это известно как поведение x-mouse.

Вам нужно всего лишь запустить его один раз, он небольшой, с открытым исходным кодом и позаботится о деталях для вас.

Скриншот элементов управления X-Mouse

3

Прямо тогда!
Откройте regedit, и давайте приступим к работе.

+ Изменить

HKEY_CURRENT_USER\Control Panel\Desktop\UserPreferenceMask

в 9F 3E 07 80 12 00 00 00

Тогда поменяй

HKEY_CURRENT_USER\Control Panel\Desktop\ActiveWndTrkTimeout

в 0 (возможно, вам придется переключить тип данных в десятичное).

Затем выйдите из системы, войдите в систему и (надеюсь) наслаждайтесь переключением окон!

2

Этот скрипт AutoHotkey делает это. Проверьте первые строки, есть некоторые параметры, которые меняют поведение скрипта:

hover_task_buttons  = 1 ; hover over taskbar button to activate window
  hover_task_group  = 1 ; hover to select (or exit) from a window-group menu
                        ; (for Windows' "Group similar taskbar buttons" feature)
hover_task_min_info = 0 ; only show info for minimized windows, don't activate
hover_start_button  = 1 ; hover over start button to open start menu
hover_min_max       = 1 ; minimize or maximize by hovering over the min/max buttons
hover_any_window    = 0 ; activate any window by hovering (except the taskbar)

hover_no_buttons    = 1 ; ignore hover if a mouse button is in the down state

hover_delay       = 500 ; hover delay, from when the mouse stops moving

; WORKS, BUT NOT PERFECTLY: (brings the window forward, then puts it back in place)
hover_keep_zorder   = 0 ; don't bring windows forward, only activate them

Вас заинтересует последний из перечисленных выше, hover_keep_zorder, с оговоркой о том, что он не работает идеально (хотя у меня он работал нормально).

Не забудьте также установить hover_any_window в 1.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .