Активация окна Total Commander движением мыши

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

В коммандере таких классов точно нет, это похоже на программу созданную с применением MFC.

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

Код: Выделить всё

WinList("[REGEXPCLASS:Afx:400000:8:10003:0:\H+]")
Аватара пользователя
Владимир М
Сообщения: 78
Зарегистрирован: Ср сен 16, 2009 20:19

Сообщение Владимир М »

Samwatas писал(а):Если речь идет о скрипте АвтоИТ
да о нём
D1P писал(а):Это вобще на имя класса не похоже, тем более на имя класса любого окна TC
действительно это не ТС
Моторокер писал(а):многие программы позволяют задать нужную программу не только по классу или заголовку, но и по имени файла
пробовал, не вышло
Loopback писал(а):Для случая выше должно быть примерно так:
к сожалению не работает

p.s. так как эта программа ни коим образом не связана с ТС сорри за оффтоп и прошу закрыть обсуждение
Windows7 x64 TC 7.55a
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

По вопросу в личке по поводу скрипта
Flasher писал(а):Не хочет работать. В параметрах ничего писать не надо?
Кнопка такая:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\AutoIt\AutoIt3.exe %COMMANDER_PATH%\Scripts\AutoIt\Scripts\Зафиксить_Панель_задач.au3
Я его на кнопку не вешал. У меня он в автозагрузке. Параметры не нужны.
Скрипт позволяет мышкой активировать (выводить на передний план) окно TC и (независимо от TC) панель задач Windows.
Окно TC тоже не активируется, если загнать мышку в правый нижний угол экрана?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):Я его на кнопку не вешал. У меня он в автозагрузке.
А, понял, запустил.
sa писал(а):Окно TC тоже не активируется, если загнать мышку в правый нижний угол экрана?
Нет, ничего такого не происходит при снятом флаге "Автоматически скрывать панель задач" и показе его поверх всех окон.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Нет, ничего такого не происходит при снятом флаге "Автоматически скрывать панель задач" и показе его поверх всех окон.
Забудем пока о панели задач. Вопрос был только об активации окна TC. При нахождении в окне какой-либо программы (не TC), если загнать мышку в правый нижний угол экрана, окно TC активируется или нет?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):ри нахождении в окне какой-либо программы (не TC), если загнать мышку в правый нижний угол экрана, окно TC активируется или нет?
Да, если в самый угол подвинуть. Но это же совсем не то, о чём я писал. Мне-то нужно, чтобы любая программа была поверх панели задач в полностью развёрнутом виде. А у меня не ТС, не любая другая так не выглядит.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Теперь по панели задач Windows. Обе опции: "Автоматически скрывать панель задач" и "Отображать панель задач поверх остальных окон" должны быть отключены. Панель задач активируется при необходимости подведеним мышки примерно в область часов в правом нижнем углу экрана (а TC активируется ещё чуть правее).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):"Отображать панель задач поверх остальных окон" должны быть отключены.
Сделал. Работает. Только как-то неудобно ловить область для появления Панели задач, так как она не захватывает область всех часов полностью. Хотелось бы увеличить диапазон ловушки для фокуса.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):неудобно ловить область для появления Панели задач
Можно поиграться размерами "мышиной норы" по X:

Код: Выделить всё

If ($mpos[0] >= @DesktopWidth - 60) And ($mpos[0] < @DesktopWidth - 10)
Здесь числа 60 и 10 задают отступ от правой границы экрана.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ок, переделал под себя. Левый верхний угол экрана - появление ТС, правый нижний (поле с часами).

Код: Выделить всё

While 1
    GUIGetMsg() ; разгрузка процессора
    $mpos = MouseGetPos()
    If ($mpos[0] <= @DesktopWidth - 1023) And ($mpos[1] < @DesktopHeight - 760) Then
        $list = WinList("[CLASS:TTOTAL_CMD]")
        If $list[0][0] > 0 Then WinActivate ($list[1][1])
    EndIf
    If ($mpos[0] >= @DesktopWidth - 200) And ($mpos[0] < @DesktopWidth - 2) And ($mpos[1] > @DesktopHeight - 30) Then
        $list = WinList("[CLASS:Shell_TrayWnd]")
        If $list[0][0] > 0 Then WinActivate ($list[1][1])
    EndIf
Wend
Спасибо за скрипт, вещь!
Последний раз редактировалось Flasher Вс мар 21, 2010 12:41, всего редактировалось 1 раз.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Код: Выделить всё

If ($mpos[0] <= @DesktopWidth - 1023) And ($mpos[1] < @DesktopHeight - 760) Then
Зачем так извращаться? Левый верхний угол экрана имеет координаты (0, 0), поэтому прямоугольник в нем при любых разрешениях элементарно ловится абсолютными размерами:

Код: Выделить всё

If ($mpos[0] < 2) And ($mpos[1] < 8) Then
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

У меня в PowerPro на курсор в верхнем левом углу настроен запуск скринсейвера. Надо сказать, что это не всегда удобно: например, при попытке активизировать системное меню крысой система трактует это действие как помещение курсора в верхний левый угол экрана. Я-то уже привык, а сначала было неудобно. Верхний правый - кнопки управления окном, нижний левый - меню Start. Нижний правый наименее "посещаемый" угол - там у меня запрет сейвера, что приходится делать гораздо чаще.
Так или иначе, как сказал CaptainFlint, PowerPro для этих дел - оптимальная приблуда. Выбор движения курсора огромен, осталось лишь выбрать и привыкнуть.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Левый верхний угол экрана имеет координаты (0, 0), поэтому прямоугольник в нем при любых разрешениях элементарно ловится абсолютными размерами:
А нижний правый?

Код: Выделить всё

If ($mpos[0] >= @DesktopWidth - 200) And ($mpos[0] < @DesktopWidth - 2) And ($mpos[1] > @DesktopHeight - 30) Then
Последний раз редактировалось Flasher Вс мар 21, 2010 13:26, всего редактировалось 1 раз.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Вахмурка писал(а):У меня в PowerPro на курсор в верхнем левом углу настроен запуск скринсейвера. Надо сказать, что это не всегда удобно: например, при попытке активизировать системное меню крысой система трактует это действие как помещение курсора в верхний левый угол экрана.
Ну так модифицируй скрипт, чтобы он требовал передвижения мыши туда и задержки ее в том углу на некоторое время (пол или четверть секунды, например).
Вахмурка писал(а):Так или иначе, как сказал CaptainFlint, PowerPro для этих дел - оптимальная приблуда. Выбор движения курсора огромен, осталось лишь выбрать и привыкнуть.
Я бы замутил себе для таких целей простенькую (килобайта на 3) программку с хуком, висящую в автозагрузке и не требующую ничего кроме винды. :) Хотя, с хуком - надо еще такую же маленькую DLL.
Flasher писал(а):
MVV писал(а):Левый верхний угол экрана имеет координаты (0, 0), поэтому прямоугольник в нем при любых разрешениях элементарно ловится абсолютными размерами:
А нижний правый?

Код: Выделить всё

If ($mpos[0] >= @DesktopWidth - 200) And ($mpos[0] < @DesktopWidth - 30) And ($mpos[1] > @DesktopHeight - 2) Then
То, что ты написал - это когда мышь находится в интервале от 30 до 200 точек (т.е. больше @DesktopWidth - 200 и меньше @DesktopWidth - 30) от правого конца экрана по горизонтали, и в пределе двух нижних строк по вертикали (т.е. координата по вертикали больше @DesktopHeight - 2) - т.е. фактически это прямоугольничек 170х2 пикселей, расположенный внизу экрана в 30 точках от правой его границы.

Правый нижний имеет максимальные координаты, которые в вашей скриптовой системе судя по всему описываются в виде (@DesktopWidth, @DesktopHeight), поэтому для определения в нижнем правом углу чувствительного прямоугольника шириной CX точек и высотой CY точек нужно условие:

Код: Выделить всё

If ($mpos[0] > @DesktopWidth - CX) And ($mpos[1] > @DesktopHeight - CY) Then
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Ну так модифицируй скрипт, чтобы он требовал передвижения мыши
В том-то и прелесть, что это не скрипт, а встроенная функция. Да я и привык уже не разгонять крысу сильно при движениях в этой области. "ТщательнЕе надо, ребята" ((С) Жванецкий). К тому же, ну запустится сейвер, ну и пес с ним. Как запустится, так и распустится.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Ответить