Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Активация окна Total Commander движением мыши
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Владимир М



Joined: 16 Sep 2009
Posts: 78

Post (Separately) Posted: Wed Sep 16, 2009 21:11    Post subject: Активация окна Total Commander движением мыши Reply with quote

Так как пользуюсь программой очень часто, хотелось бы видеть такую опцию как, активация (выход на передний план) окна TC при определённой манипуляции мыши. Допустим такая манипуляция: касание курсором мыши левого борта монитора.

 !  Моторокер:
Обсуждение отделено из темы
Что бы хотелось увидеть в новых версиях Total Commander
Исправлены опечатки.
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Wed Sep 16, 2009 22:36    Post subject: Reply with quote

Владимир М
Для этого можно утилитку написать, хотя наверняка решается существующими.
_________________
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Back to top
View user's profile Send private message
Владимир М



Joined: 16 Sep 2009
Posts: 78

Post (Separately) Posted: Thu Sep 17, 2009 00:36    Post subject: Reply with quote

Моторокер wrote:
Владимир М
Для этого можно утилитку написать, хотя наверняка решается существующими.

теми что пробовал получается "криво" (долгое ожидание), так как система пытается запустить ТС заново а не активировать уже открытое
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Thu Sep 17, 2009 00:56    Post subject: Reply with quote

Владимир М wrote:
теми что пробовал получается "криво" (долгое ожидание), так как система пытается запустить ТС заново а не активировать уже открытое

Многие инструменты умеют посылать сообщения в работающие программы. Например, PowerPro.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Владимир М



Joined: 16 Sep 2009
Posts: 78

Post (Separately) Posted: Thu Sep 17, 2009 08:42    Post subject: Reply with quote

CaptainFlint wrote:
Владимир М wrote:
теми что пробовал получается "криво" (долгое ожидание), так как система пытается запустить ТС заново а не активировать уже открытое

Многие инструменты умеют посылать сообщения в работающие программы. Например, PowerPro.

спасибо за наводку. программу скачал, установил, но из-за слабого ангельского "потерялся" в многочисленных настройках. не подскажешь как реализовать идею(описанную выше) быстрой активации ТС?
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Thu Sep 17, 2009 10:45    Post subject: Reply with quote

Владимир М 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
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Thu Sep 17, 2009 12:37    Post subject: Reply with quote

В принципе задача решается любым скриптовым языком. Я раньше тоже пользовался 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
View user's profile Send private message
Владимир М



Joined: 16 Sep 2009
Posts: 78

Post (Separately) Posted: Thu Sep 17, 2009 13:08    Post subject: Reply with quote

CaptainFlint wrote:
… В общем, надо разбираться.

Точно. Надо в этом разбираться. Попробовал твой метод, но вместо желаемого результата, получил другое, некоторые окна вообще отказались разворачиваться из трея а те которые висели "всегда на верху" стали на задний план. Кароче говоря пока идея не реализована, но всё равно благодарю за участие.

Loopback wrote:
В принципе задача решается любым скриптовым языком. ....... я использую для скриптинга Autoit3, на нем эта задача решается за 3 минуты

Будь добр расскажи по подробней как этот скрипт будет работать?
p.s. Скопировал твой код и сохранил с разрешением au3 запускаю и тишина...... может есть то чего я незнаю или сделал что то не так?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1291

Post (Separately) Posted: Thu Sep 17, 2009 13:26    Post subject: Reply with quote

Владимир М wrote:
Будь добр расскажи по подробней как этот скрипт будет работать?

p.s. скопировал твой код и сохранил с разрешением au3 запускаю и тишина...... может есть то чего я незнаю или сделал что то не так?

Мышь подводится к правой (невнимательно прочитал ТЗ...) границе экрана, в зону 30 пикселей от нижней границы экрана - иначе очень легко случайно задеть.

А например, для всей левой границы условие будет такое:
Code:
If ($mpos[0] < 1) Then
Back to top
View user's profile Send private message
Владимир М



Joined: 16 Sep 2009
Posts: 78

Post (Separately) Posted: Thu Sep 17, 2009 13:36    Post subject: Reply with quote

Loopback
ВАУ!!!!!!! ОГРОМНОЕ спасибо! всё замечательно работает!
_________________
Windows7 x64 TC 7.55a
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2571

Post (Separately) Posted: Fri Sep 18, 2009 00:04    Post subject: Reply with quote

Добавил в сценарии уважаемого 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
View user's profile Send private message
Владимир М



Joined: 16 Sep 2009
Posts: 78

Post (Separately) Posted: Tue Oct 06, 2009 12:58    Post subject: Reply with quote

А как быть, если класс программы, которую нужно активировать, меняется при каждом последующем её запуске? Вот например сейчас она имеет такой класс: Afx:400000:8:10003:0:280eef а после перезагрузки этой программы, уже такой Afx:400000:8:10003:0:ade1a7d Как быть в этом случае? Не хотелось бы вносить изменения в скрипт постоянно.
_________________
Windows7 x64 TC 7.55a
Back to top
View user's profile Send private message
Samwatas



Joined: 12 Sep 2009
Posts: 95

Post (Separately) Posted: Tue Oct 06, 2009 18:40    Post subject: Reply with quote

Если речь идет о скрипте АвтоИТ, то там можно использовать дополнительные возможности (в частности, использовать рег. выражения). Посмотрите справку по теме "Заголовок и текст окна (дополнительные возможности)".
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Tue Oct 06, 2009 20:31    Post subject: Reply with quote

Владимир М
Владимир М wrote:
fx:400000:8:10003:0:280eef а после перезагрузки этой программы, уже такой Afx:400000:8:10003:0:ade1a7d

Это вобще на имя класса не похоже, тем более на имя класса любого окна TC.
_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Wed Oct 07, 2009 21:50    Post subject: Reply with quote

Владимир М 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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group