View previous topic :: View next topic |
Author |
Message |
Владимир М
Joined: 16 Sep 2009 Posts: 78
|
(Separately) Posted: Wed Sep 16, 2009 21:11 Post subject: Активация окна Total Commander движением мыши |
|
|
Так как пользуюсь программой очень часто, хотелось бы видеть такую опцию как, активация (выход на передний план) окна TC при определённой манипуляции мыши. Допустим такая манипуляция: касание курсором мыши левого борта монитора.
|
|
Back to top |
|
|
Моторокер
Joined: 06 May 2005 Posts: 1517 Location: г. Пермь (читается Перьмь)
|
(Separately) Posted: Wed Sep 16, 2009 22:36 Post subject: |
|
|
Владимир М
Для этого можно утилитку написать, хотя наверняка решается существующими. _________________ плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми |
|
Back to top |
|
|
Владимир М
Joined: 16 Sep 2009 Posts: 78
|
(Separately) Posted: Thu Sep 17, 2009 00:36 Post subject: |
|
|
Моторокер wrote: | Владимир М
Для этого можно утилитку написать, хотя наверняка решается существующими. |
теми что пробовал получается "криво" (долгое ожидание), так как система пытается запустить ТС заново а не активировать уже открытое |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Thu Sep 17, 2009 00:56 Post subject: |
|
|
Владимир М wrote: | теми что пробовал получается "криво" (долгое ожидание), так как система пытается запустить ТС заново а не активировать уже открытое |
Многие инструменты умеют посылать сообщения в работающие программы. Например, PowerPro. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Владимир М
Joined: 16 Sep 2009 Posts: 78
|
(Separately) Posted: Thu Sep 17, 2009 08:42 Post subject: |
|
|
CaptainFlint wrote: | Владимир М wrote: | теми что пробовал получается "криво" (долгое ожидание), так как система пытается запустить ТС заново а не активировать уже открытое |
Многие инструменты умеют посылать сообщения в работающие программы. Например, PowerPro. |
спасибо за наводку. программу скачал, установил, но из-за слабого ангельского "потерялся" в многочисленных настройках. не подскажешь как реализовать идею(описанную выше) быстрой активации ТС? |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Thu Sep 17, 2009 10:45 Post subject: |
|
|
Владимир М wrote: | не подскажешь как реализовать идею(описанную выше) быстрой активации ТС? |
Сходу не подскажу, я в нём отнюдь не эксперт. Основное направление рытья такое: Configuration -> вкладка Key/Mouse -> New. Там задаём параметры:
Key/Mouse: bump screen left ("удар" мышью левого края экрана)
Enter command or select…: *Window (категория команд управления окнами)
Window control action: Show (команда вывода окна на передний план)
Select target window or enter…: c=TTOTAL_CMD (сообщение будет посылаться только окнам с таким классом)
Однако это только в теории. На практике у меня такая команда вместо вывода окна на передний план делает его мигающим в панели задач. Возможно, надо посылать команду через SendMessage или PostMessage… В общем, надо разбираться. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Thu Sep 17, 2009 12:37 Post subject: |
|
|
В принципе задача решается любым скриптовым языком. Я раньше тоже пользовался PowerPro, но хотя инструмент это весьма мощный, довольно быстро его забросил, не понравился он мне своей запутанностью и непортабельностью.
Сейчас я использую для скриптинга Autoit3, на нем эта задача решается за 3 минуты таким скриптом:
Code: |
While 1
GUIGetMsg() ; разгрузка процессора
$mpos = MouseGetPos()
If ($mpos[0] >= @DesktopWidth - 1) And ($mpos[1] > @DesktopHeight - 30) Then
$list = WinList("[CLASS:TTOTAL_CMD]")
If $list[0][0] > 0 Then WinActivate ($list[1][1])
EndIf
Wend
|
|
|
Back to top |
|
|
Владимир М
Joined: 16 Sep 2009 Posts: 78
|
(Separately) Posted: Thu Sep 17, 2009 13:08 Post subject: |
|
|
CaptainFlint wrote: | … В общем, надо разбираться. |
Точно. Надо в этом разбираться. Попробовал твой метод, но вместо желаемого результата, получил другое, некоторые окна вообще отказались разворачиваться из трея а те которые висели "всегда на верху" стали на задний план. Кароче говоря пока идея не реализована, но всё равно благодарю за участие.
Loopback wrote: | В принципе задача решается любым скриптовым языком. ....... я использую для скриптинга Autoit3, на нем эта задача решается за 3 минуты |
Будь добр расскажи по подробней как этот скрипт будет работать?
p.s. Скопировал твой код и сохранил с разрешением au3 запускаю и тишина...... может есть то чего я незнаю или сделал что то не так? |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1291
|
(Separately) Posted: Thu Sep 17, 2009 13:26 Post subject: |
|
|
Владимир М wrote: | Будь добр расскажи по подробней как этот скрипт будет работать?
p.s. скопировал твой код и сохранил с разрешением au3 запускаю и тишина...... может есть то чего я незнаю или сделал что то не так? |
Мышь подводится к правой (невнимательно прочитал ТЗ...) границе экрана, в зону 30 пикселей от нижней границы экрана - иначе очень легко случайно задеть.
А например, для всей левой границы условие будет такое:
Code: | If ($mpos[0] < 1) Then |
|
|
Back to top |
|
|
Владимир М
Joined: 16 Sep 2009 Posts: 78
|
(Separately) Posted: Thu Sep 17, 2009 13:36 Post subject: |
|
|
Loopback
ВАУ!!!!!!! ОГРОМНОЕ спасибо! всё замечательно работает! _________________ Windows7 x64 TC 7.55a |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2571
|
(Separately) Posted: Fri Sep 18, 2009 00:04 Post subject: |
|
|
Добавил в сценарии уважаемого Loopback ещё одно условие и теперь радуюсь полноэкранному Total Commander-у (и не только ему). Раньше "отнимал" у TC (точнее - у себя) нижнюю строку включением опции "Отображать панель задач поверх остальных окон". При этом вынужден был отключать опцию "Автоматически скрывать панель задач" из-за назойливого выскакивания этой панели при попадании курсора мышки в любое место внизу экрана (например, при попытке нажать в TC мышкой клавишу "Копирование"). Теперь отключил и первую опцию, а панель задач активирую, когда возникает такая необходимость, подводя курсор примерно в область часов в правом нижнем углу экрана. Ну а TC активируется ещё чуть правее.
p.s. У меня Windows XP
Code: | While 1
GUIGetMsg() ; разгрузка процессора
$mpos = MouseGetPos()
If ($mpos[0] >= @DesktopWidth - 1) And ($mpos[1] > @DesktopHeight - 30) Then
$list = WinList("[CLASS:TTOTAL_CMD]")
If $list[0][0] > 0 Then WinActivate ($list[1][1])
EndIf
If ($mpos[0] >= @DesktopWidth - 60) And ($mpos[0] < @DesktopWidth - 10) And ($mpos[1] > @DesktopHeight - 10) Then
$list = WinList("[CLASS:Shell_TrayWnd]")
If $list[0][0] > 0 Then WinActivate ($list[1][1])
EndIf
Wend
|
|
|
Back to top |
|
|
Владимир М
Joined: 16 Sep 2009 Posts: 78
|
(Separately) Posted: Tue Oct 06, 2009 12:58 Post subject: |
|
|
А как быть, если класс программы, которую нужно активировать, меняется при каждом последующем её запуске? Вот например сейчас она имеет такой класс: Afx:400000:8:10003:0:280eef а после перезагрузки этой программы, уже такой Afx:400000:8:10003:0:ade1a7d Как быть в этом случае? Не хотелось бы вносить изменения в скрипт постоянно. _________________ Windows7 x64 TC 7.55a |
|
Back to top |
|
|
Samwatas
Joined: 12 Sep 2009 Posts: 95
|
(Separately) Posted: Tue Oct 06, 2009 18:40 Post subject: |
|
|
Если речь идет о скрипте АвтоИТ, то там можно использовать дополнительные возможности (в частности, использовать рег. выражения). Посмотрите справку по теме "Заголовок и текст окна (дополнительные возможности)". |
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Tue Oct 06, 2009 20:31 Post subject: |
|
|
Владимир М
Владимир М wrote: | fx:400000:8:10003:0:280eef а после перезагрузки этой программы, уже такой Afx:400000:8:10003:0:ade1a7d |
Это вобще на имя класса не похоже, тем более на имя класса любого окна TC. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Моторокер
Joined: 06 May 2005 Posts: 1517 Location: г. Пермь (читается Перьмь)
|
(Separately) Posted: Wed Oct 07, 2009 21:50 Post subject: |
|
|
Владимир М wrote: | А как быть, если класс программы, которую нужно активировать, меняется при каждом последующем её запуске? Вот например сейчас она имеет такой класс: Afx:400000:8:10003:0:280eef а после перезагрузки этой программы, уже такой Afx:400000:8:10003:0:ade1a7d Как быть в этом случае? Не хотелось бы вносить изменения в скрипт постоянно. |
Имя запущенного файла и путь точно одинаковые - многие программы позволяют задать нужную программу не только по классу или заголовку, но и по имени файла.
Заменил красный цвет на зелёный. _________________ плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми |
|
Back to top |
|
|
|