Открытие элементов Панели управления в Проводнике
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: Открытие элементов Панели управления в Проводнике Author: dank1Location: Санкт-Петербург PostPosted: Thu Oct 01, 2015 15:19
    —
Здравствуйте. Помогите пожалуйста разобраться. В Totale можно открывать "панель управления" -> "все элементы панели управления", но если допустим нажать дальше на "Электропитание" то раздел откроется как пустая папка, а хочется чтобы открывалось в проводнике. На форуме есть кнопка:
Code:

TOTALCMD#BAR#DATA
explorer.exe
%P
explorer.exe,1
Открыть текущую папку в Win. Explorer


-1

Но она в данном случае не работает (вместо электропитания открывает мои документы). Видимо проводнику неправильно передает пути: вместо нужного "Панель управления\Все элементы панели управления\Электропитание" передает "\\Все элементы панели управления\". Зато работает правая кнопка мыши пункт открыть и меня это устроило бы если можно было как нибудь назначить на это действие хот кей. Возможно ли это реализовать как нибудь? Может плагином? Или может есть способ чтобы путь корректировать? Заранее спасибо.

P. S. Пока выход только один использовать autohotkey но это костыль.

#2:  Author: FlasherLocation: Москва PostPosted: Thu Oct 01, 2015 15:29
    —
dank1 wrote:
P. S. Пока выход только один использовать autohotkey но это костыль.
Если подобная автоматизация - костыль, то и остальные варианты им окажуться. Так что не судьба.
Хотя смотря что называть костылём, т.к. реализации в том же AHK бывают разные.
Для себя я решил вопрос VBS-скриптом и выпадающим тулбаром списка.
Ежели нужно видеть всё это именно в файловой панели, то самый доступный способ - создать в некой папке через ПКМ ярлыки к каждому элементу этого списка и вместо cm_OpenControls вызывать cd "<данная папка>".
Что касается вышеуказанной кнопки, то там в параметре не хватает кавычек.

#3:  Author: MVVLocation: Ростов-Дон PostPosted: Thu Oct 01, 2015 15:55
    —
dank1,
В случае виртуальных папок путь, отображаемый в панелях, может не существовать физически, и иметь другой вид в другой программе (что поделать, Microsoft). Считаю, что совет про папку с ярлыками вполне хорош. Я лично пользуюсь панелью инструментов в виде меню, выпадающего из меню Пуск (при активации соотв. опции в свойствах панели задач).

#4:  Author: FlasherLocation: Москва PostPosted: Thu Oct 01, 2015 16:05
    —
MVV wrote:
путь, отображаемый в панелях, может не существовать физически
Там вообще нет никакого пути. Поэтому строку и назвали заголовком, чтобы не путать людей.

#5:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Oct 01, 2015 16:39
    —
dank1
Я ответил на ру-борде, где увидел тот же вопрос (заданный малость покороче) раньше, повторяться не буду. И вообще одновременные запросы про одно и то же там и здесь — вредная привычка, от которой советую отказаться.
Кроме того, этот самый элемент Панели управления — никакая не папка, так что заголовок темы "Корректное открытие папок в проводнике" сам абсолютно некорректен, и я его исправляю.

#6:  Author: FlasherLocation: Москва PostPosted: Thu Oct 01, 2015 16:54
    —
Avada
Позволю себе в таком случае прокомментировать следующее:
Avada wrote:
это имеет смысл делать только в TC той же битности, что и система; ..., при попытке открыть элемент типа "Электроптитание" должен открыться системный апплет отдельно от TC
Первая бяка, которая мне бросилась в глаза в ТС при переходе с XP на Win7x32, - это описанная проблема. Т.е. битность тут ни при чём, апплет открываться не будет всё равно.

dank1
Некоторое уточнение по предложенному созданию ярлыков. Запускать подобные Элекропитанию lnk придётся аналогичной кнопкой (лучше хоткеем), только вместо %P там должен быть %V.


Last edited by Flasher on Thu Oct 01, 2015 17:38; edited 1 time in total

#7:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Oct 01, 2015 17:37
    —
Flasher wrote:
Первая бяка, которая мне бросилась в глаза в ТС при переходе с XP на Win7x32, - это описанная проблема. Т.е. битность тут ни при чём, апплет открываться не будет всё равно.

Спасибо, но я отвечал с работы, где машина с XP. Немного поправил. А битность на Win7 имеет отношение в том смысле, что при её несовпадении (32-битный TC на x64) и основная-то папка нормально не откроется. А при совпадении, как следует из обсуждаемого здесь, появятся другие проблемы...

#8:  Author: dank1Location: Санкт-Петербург PostPosted: Thu Oct 01, 2015 20:37
    —
Flasher, MVV, Avada
Спасибо вам за помощь. Очень много нового узнал про тотал. К сожалению, чтобы в корне решить проблему надо писать WFX плагин на что у меня нет времени.
Flasher wrote:
Для себя я решил вопрос VBS-скриптом и выпадающим тулбаром списка.

А что за скрипт?
MVV wrote:
Считаю, что совет про папку с ярлыками вполне хорош.

Полностью согласен.
Avada wrote:
При попытке открыть в файловой панели элемент типа "Электропитание" в WinXP должен открыться системный апплет отдельно от TC, но в Win7 это не получается.

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

#9:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Oct 01, 2015 20:59
    —
dank1 wrote:
Это из серии: В новом патче мы добавили больше багов, чтобы люди поняли, что раньше все было не так уж и плохо.

Это камешек в чей огород — TC или Microsoft? Smile

#10:  Author: FlasherLocation: Москва PostPosted: Thu Oct 01, 2015 21:17
    —
dank1 wrote:
надо писать WFX плагин
Либо искать и теребить автора CPL, если он 'живой' вообще. Wink
dank1 wrote:
А что за скрипт?
Там весь скрипт - 2 строчки. Но чего-то не хотел я его выкладывать, зажабил. К нему там список ещё прилагается (и он касается не только элементов панели управления). Может, позже на TCKB выложу с описанием, не знаю..

#11:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Oct 01, 2015 22:06
    —
Flasher
...либо просить Гислера всё-таки модифицировать поведение TC по обработке этой виртуальной папки в новых ОС. Если это возможно, конечно. А с этим старым плагином, ИМХО, номер дохлый: это слишком давно заброшено, да и в исходном виде. насколько помню, было не шибко интересно.

#12:  Author: FlasherLocation: Москва PostPosted: Thu Oct 01, 2015 22:16
    —
Avada
Что-то мне подсказывает, что Гислера об этом точно просили, и он отказался.
Про дохлость номера тоже так думаю, хотя всяко случалось, как с птицей Феникс (DiskInternals Reader, TweakTC и т.д.).

dank1
Стоп, я запамятовал. Мой скрипт-то касается дополнительных труднодоступных средств. А команды для элементов ПУ в кнопках у меня выглядят таким образом:
 тут только неработающие из панели ТС
Остальные легко тащатся на тулбар и GUID сами подставляются.
Вместо ::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\ можно писать shell:::, чтобы покороче было. Как на x64 не знаю.

#13:  Author: dank1Location: Санкт-Петербург PostPosted: Fri Oct 02, 2015 13:55
    —
Avada wrote:
Это камешек в чей огород — TC или Microsoft?

У мелких не бывает багов у них только фичи.
Flasher wrote:
А команды для элементов ПУ в кнопках у меня выглядят таким образом:

Спасибо, я по этому поводу уже кое чего нашел (ссылку не дают вставить).
Flasher wrote:
Что-то мне подсказывает, что Гислера об этом точно просили, и он отказался.

Когда кажется, что все против тебя. Когда ты уже не Привет, сосед а тот мужик с перфоратором. Когда все раскалывается и ты просто не можешь встать и идти дальше. Останется тот кто всегда с тобой!
Петрович...

В общем появилась у меня одна идея, как это разрулить скриптом, вечером отпишусь.

#14:  Author: FlasherLocation: Москва PostPosted: Fri Oct 02, 2015 13:57
    —
dank1
Не надо тут, лучше на TCKB (список-то длинный).
Есть одно замечание касаемо GUID (я раньше писал о нём). По скорости запуска он значительно превосходит аналоги с rundll32, поэтому в своё время на таком вызове и остановился.
А в ссылке можно убрать http://. Модератор всегда поправит при необходимости.

#15:  Author: dank1Location: Санкт-Петербург PostPosted: Fri Oct 02, 2015 14:12
    —
Flasher wrote:
Не надо тут, лучше на TCKB (список-то длинный).

Так у меня скрипт ведь будет а там плагины.
Flasher wrote:

Есть одно замечание касаемо GUID (я раньше писал о нём). По скорости запуска он значительно превосходит аналоги с rundll32, поэтому в своё время на таком вызове и остановился.

А с этого момента поподробнее пожалуйста. Ты про вызов типа %windir%\explorer.exe shell:::{26EE0668-A00A-44D7-9371-BEB064C98683}?


Last edited by dank1 on Fri Oct 02, 2015 14:21; edited 1 time in total

#16:  Author: FlasherLocation: Москва PostPosted: Fri Oct 02, 2015 14:16
    —
dank1 wrote:
Так у меня скрипт ведь будет а там плагины.
Какие ещё плагины?
dank1 wrote:
А с этого момента поподробнее пожалуйста.
А как тут подробнее? Секунды не замерял, но очевидно, что быстрее.

Flasher wrote:
Что-то мне подсказывает, что Гислера об этом точно просили, и он отказался.
Не поленился поискать. Доказательства на лицо.

#17:  Author: dank1Location: Санкт-Петербург PostPosted: Fri Oct 02, 2015 14:34
    —
Flasher
Ты реально флешер пока исправлял свое сообщение ты уже 10 раз ответил.
Flasher wrote:
А как тут подробнее? Секунды не замерял, но очевидно, что быстрее.

Я имел ввиду подробнее о каких вызовах речь. %windir%\explorer.exe shell:::{26EE0668-A00A-44D7-9371-BEB064C98683} - такой вызов быстрее rundll32?

#18:  Author: FlasherLocation: Москва PostPosted: Fri Oct 02, 2015 14:36
    —
dank1
explorer тут вообще не нужен. Да, быстрее.
И всё-таки что там с плагинами, я не понял?

#19:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Oct 02, 2015 15:03
    —
dank1
Про explorer и пр. На предыдущей странице был мой пост со ссылкой на ру-борд, а там, в свою очередь, была эта ссылка. Всё, что необходимо, там по синтаксису подобных команд сказано, читаем внимательно.

#20:  Author: dank1Location: Санкт-Петербург PostPosted: Fri Oct 02, 2015 15:11
    —
Flasher wrote:
explorer тут вообще не нужен.

Команды shell это "спец. пути" для проводника. Если в консоли (не win+r а именно cmd) набрать shell:::{26EE0668-A00A-44D7-9371-BEB064C98683} без explorer то вылезет ошибка.
Flasher wrote:
И всё-таки что там с плагинами, я не понял?

Ты же мне сказал выложить на TCKB скрипт, а там только плагины.
Flasher wrote:
Не поленился поискать. Доказательства на лицо.

Я в английском не силен, но там вроде речь шла про то что тотал не обрабатывает сам cpl файлы. Так нам ведь не это нужно, нужно лишь чтобы как и в xp (со слов Avada) открывались разделы в проводнике. Да и пост старый (2009 года). Тогда семерка только появилась и тотала 64 битного еще не было.

#21:  Author: FlasherLocation: Москва PostPosted: Fri Oct 02, 2015 15:15
    —
dank1 wrote:
Если в консоли
В какой ещё консоли? Мы про интерфейс ТС говорим вообще-то.
dank1 wrote:
а там только плагины.
Что, прости? Confused
dank1 wrote:
но там вроде речь шла про
Внимательно советую почитать. Суть не в битности, а в отображении панели инструментов. См. концовку.

#22:  Author: dank1Location: Санкт-Петербург PostPosted: Fri Oct 02, 2015 15:22
    —
Avada wrote:
Про explorer и пр. На предыдущей странице был мой пост со ссылкой на ру-борд, а там, в свою очередь, была эта ссылка. Всё, что необходимо, там по синтаксису подобных команд сказано, читаем внимательно.

Я прочитал сразу как ты скинул. Кстати список там довольно скудный можно добавить например вот отсюда: (www.ekzorchik.ru/wordpress/2012/03/%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8F-%D0%BD%D0%B0%D0%B7%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B8-guid-%D0%BE/)
Кстати сразу обратил внимание на неточность:
::{26EE0668-A00A-44D7-9371-BEB064C98683} Панель управления (по категориям)
::{21EC2020-3AEA-1069-A2DD-08002B30309D} Панель управления (Все элементы)

#23:  Author: FlasherLocation: Москва PostPosted: Fri Oct 02, 2015 15:28
    —
dank1
Нет смысла добавлять, т.к. открытие в файловой панели по cd не связано с открытием апплета в Проводнике по GUID.
Что касаемо TCKB. Этот раздел видно? А все остальные?

#24:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Oct 02, 2015 15:34
    —
dank1
Прочитал — возможно, но понял ли? Там важно, не насколько велик список (разумеется, он на данный момент выборочный) и откуда что добавить (это найти не так уж сложно), а как правильно именно в TC организовать вызов.

#25:  Author: dank1Location: Санкт-Петербург PostPosted: Fri Oct 02, 2015 15:47
    —
Flasher, Avada
Все допер теперь. Сейчас перерыв будет напишу скрипт.

#26:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Oct 02, 2015 18:25
    —
dank1
Кстати, за поправку насчёт таблицы благодарю. В новой версии будет учтено.

#27:  Author: dank1Location: Санкт-Петербург PostPosted: Sat Oct 03, 2015 20:57
    —
Думал делов на час. Пишу уже часа четыре. Много подводных камней.

#28:  Author: FlasherLocation: Москва PostPosted: Sat Oct 03, 2015 22:48
    —
dank1
В чём проблема? И в чём сама суть скрипта?

#29:  Author: dank1Location: Санкт-Петербург PostPosted: Sun Oct 04, 2015 01:44
    —
Flasher wrote:
В чём проблема? И в чём сама суть скрипта?

Скрипт пишу на autohotkey. Скрипт преобразует пути тотала в вызовы типа shell::. Все работает кроме одного вызова, а именно:
Code:
run shell:::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\%USERPROFILE%\Desktop

При таком вызове открывается "виртуальная" папка "рабочий стол" (такая же папка откроется если ввести эту команду без run в окно выполнить). Если вызывать так:
Code:
run explorer %USERPROFILE%\Desktop

То откроется нужная реальная папка Desktop (такая же папка откроется если ввести эту команду без run в окно выполнить), но такой вызов ощутимо дольше работает чем shell::. Странно еще то что команда
Code:
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\%USERPROFILE%\Desktop

набранная в консоли TC работает как надо, можно в принципе перенаправить вызов из скрипта в ТС ничего страшного в этом нет, но все же интересно как это реализовать независимо от тотала.

P.S. команда shell:Desktop тоже открывает виртуальную папку.

#30:  Author: FlasherLocation: Москва PostPosted: Sun Oct 04, 2015 07:57
    —
dank1 wrote:
Скрипт преобразует пути тотала в вызовы типа shell::
1) Какие именно пути? Откуда они беруться?
2) Ну, преобразовал, а дальше что? Суть происходящего так и не описана.
dank1 wrote:
Все работает кроме одного вызова, а именно:
Поменяй на run shell:desktop
dank1 wrote:
При таком вызове открывается "виртуальная" папка "рабочий стол"
Для рабочего стола есть внутренняя команда в ТС. И какое отношение к сабжу имеет рабочий стол?
Если же говорить об открытии невиртуальных папок в самом ТС, то всё давно придумано.
dank1 wrote:
без run в окно выполнить
Выполнить - это и есть run.
dank1 wrote:
но все же интересно как это реализовать независимо от тотала
Если уж и делать скрипт для ТС, то он должен открывать в проводнике только те вирт. папки, которые не открываются в самом ТС, иначе сиё будет противоречить сути сабжа и работы в ТС.
Т.е. в моём понимании, если говорить непосредственно о панели, это должно выглядить так:
Code:
'=============================================== VBS ================================================
' Открыть в Проводнике недоступный в ТС элемент панели управления (cm_OpenControls) либо нажать Enter
' Рекомендация: назначить клавиатурную комбинацию с Enter для вызова пользовательской команды
' Параметр: %V
'====================================================================================================
P = "\\" & CreateObject("Shell.Application").NameSpace("::{26EE0668-A00A-44D7-9371-BEB064C98683}\0").Self.Name & "\"
Select Case WScript.Arguments(0)
  Case P & "Автозапуск" GUID = "{9C60DE1E-E5FC-40F4-A487-460851A8D915}"
  Case P & "Архивация и восстановление" GUID = "{B98A2BEA-7D42-4558-8BD1-832F41BAC6FD}"
  Case P & "Брандмауэр Windows" GUID = "{4026492F-2F69-46B8-B9BF-5654FC07E423}"
  Case P & "Восстановление" GUID = "{9FE63AFD-59CF-4419-9775-ABCC3849F861}"
  Case P & "Датчик расположения и другие датчики" GUID = "{E9950154-C418-419E-A90A-20C5287AE24B}"
  Case P & "Диспетчер учетных данных" GUID = "{1206F5F1-0569-412C-8FEC-3204630DFB70}"
  Case P & "Домашняя группа" GUID = "{67CA7650-96E6-4FDD-BB43-A8E774F73A57}"
  Case P & "Значки области уведомлений" GUID = "{05D7B0F4-2121-4EFF-BF6B-ED3F69B894D9}"
  Case P & "Персонализация" GUID = "{ED834ED6-4B5A-4BFE-8F11-A626DCB6A921}"
  Case P & "Подключения к удаленным рабочим столам и приложениям RemoteApp" GUID = "{241D7C96-F8BF-4F85-B01F-E2B043341A4B}"
  Case P & "Программы по умолчанию" GUID = "{17CD9488-1228-4B2F-88CE-4298E93E0966}"
  Case P & "Распознавание речи" GUID = "{58E3C745-D971-4081-9034-86E34B30836A}"
  Case P & "Родительский контроль" GUID = "{96AE8D84-A250-4520-95A5-A47A7E3C548B}"
  Case P & "Система" GUID = "{BB06C0E4-D293-4F75-8A90-CB05B6477EEE}"
  Case P & "Счетчики и средства производительности" GUID = "{78F3955E-3B90-4184-BD14-5397C15F1EFC}"
  Case P & "Устранение неполадок" GUID = "{C58C4893-3BE0-4B45-ABB5-A63E4B8C8651}"
  Case P & "Учетные записи пользователей" GUID = "{60632754-C523-4B62-B45C-4172DA012619}"
  Case P & "Центр обновления Windows" GUID = "{36EEF7DB-88AD-4E81-AD49-0E313F0C35F8}"
  Case P & "Центр поддержки" GUID = "{BB64F8A7-BEE7-4E1A-AB8D-7D8273F7FDB6}"
  Case P & "Центр синхронизации" GUID = "{9C73F5E5-7AE7-4E32-A8E8-8D23B85255BF}"
  Case P & "Центр специальных возможностей" GUID = "{D555645E-D4F8-4C29-A827-D93C859C4F2A}"
  Case P & "Центр управления сетями и общим доступом" GUID = "{8E908FC9-BECC-40F6-915B-F4CA0E70D03D}"
  Case P & "Шифрование диска BitLocker" GUID = "{D9EF8727-CAC2-4E60-809E-86F80A666C91}"
  Case P & "Экран" GUID = "{C555438B-3C23-4769-A71F-B6D3D9B6053A}"
  Case P & "Электропитание" GUID = "{025A5937-A6BE-4686-A844-36FE4BEC8B6D}"
End Select
With CreateObject("WScript.Shell") If Len(GUID) Then .Run "shell:::" & GUID Else .SendKeys "~" End If End With
Можно назначить и Enter, тогда будет фактическая реализация исходной задачи.
Правда в этом случае придётся заменить .SendKeys "~" на нечто вроде
.Exec "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef tcm(1001)", иначе будет глюк зацикливания ENTER пока не сменится окно.

#31:  Author: dank1Location: Санкт-Петербург PostPosted: Sun Oct 04, 2015 13:45
    —
Flasher wrote:
1) Какие именно пути? Откуда они беруться?
2) Ну, преобразовал, а дальше что? Суть происходящего так и не описана.

Преобразовывает и открывает в проводнике все как ты написал на vbs только параметр я передавал %P%N. (%V работает корректнее).
Flasher wrote:
Для рабочего стола есть внутренняя команда в ТС. И какое отношение к сабжу имеет рабочий стол?

Действительно с рабочим столом уже перебор. Есть еще один момент: знаешь как уже работающему скрипту запросить этот параметр %V может переменная какая есть в тотале?

#32:  Author: FlasherLocation: Москва PostPosted: Sun Oct 04, 2015 13:57
    —
dank1 wrote:
знаешь как уже работающему скрипту запросить этот параметр %V может переменная какая есть в тотале?
Резидентному? А какой в нём смысл? Это же лишняя трата ресурсов.
В WM_COPYDATA есть только путь и имя (аналог %P и %N): cmd:="SP" и cmd:="SN", соответственно.

#33:  Author: dank1Location: Санкт-Петербург PostPosted: Sun Oct 04, 2015 14:22
    —
Flasher wrote:
Резидентному? А какой в нём смысл? Это же лишняя трата ресурсов.

Да резидентному. Смысл в том что если скрипт вешать на Enter как ты предложил то каждый раз происходит запуск скрипта (даже в обычных каталогах) чувствуется задержка на слабом пк. Или проще на другую кнопку повесить и не париться?

#34:  Author: FlasherLocation: Москва PostPosted: Sun Oct 04, 2015 14:26
    —
dank1
Я думаю, что лучше на другую (Win(+Shift)+Enter), как и написал в шапке.
Либо парься с WM_COPYDATA (там ещё столько же написать придётся), но не вижу в этом особого плюса.
 Вот так это происходит, если что:


Last edited by Flasher on Tue Oct 06, 2015 16:42; edited 6 times in total

#35:  Author: dank1Location: Санкт-Петербург PostPosted: Sun Oct 04, 2015 16:07
    —
Flasher wrote:
Вот так это происходит, если что:

Ну ты человечище! Я бы сам не додумал бы такое. Это то что нужно. А можно как нибудь проверить условие активности внутреннего окна тотала с файлами или отсутствие фокуса в главном меню? А то тогда при нажатии Enter вместо открытия соответствующего пункта главного меню открывается элемент панели управления. А так все работает! Надо еще потестить.

PS. видимо проверять надо именно отсутствие фокуса в главном меню, так как одно из окон тотала всегда активно, но как?

#36:  Author: FlasherLocation: Москва PostPosted: Sun Oct 04, 2015 19:32
    —
dank1
Честно говоря, не ведаю. ControlGetFocus всё равно тут даст TMyListBox(1/2). А как поймать #32768, если меню, я так понимаю, исчезает до проверки его активности, если она вообще есть, не соображу пока.

#37:  Author: dank1Location: Санкт-Петербург PostPosted: Sun Oct 04, 2015 23:25
    —
Flasher wrote:
Честно говоря, не ведаю. ControlGetFocus всё равно тут даст TMyListBox(1/2). А как поймать #32768, если меню, я так понимаю, исчезает до проверки его активности, если она вообще есть, не соображу пока.

Ок обойдемся и без него. Решил доделать без этих премудростей. Вот готовый скрипт:
 open_cpannel_element.ahk

Биндим на хоткей. Параметры %P%N. Само сабой только для русской локали, только хардкор. Протестировал все пути на win7 все работает в том числе и в режиме проводника ( Ctrl+F8 ). Прошу потестить всех кто имеет возможность. Спасибо.

#38:  Author: FlasherLocation: Москва PostPosted: Mon Oct 05, 2015 19:59
    —
dank1
Блин, а ларчик просто открывался. WinExist вполне рабочий (почему-то сразу не срабатывал). Поправил скрипт выше. Можешь делать резидент.
В отношении твоего. Я бы отказался от вариант открытия всего в Проводнике. И, конечно, не помешает повторяющиеся куски заменить на переменные, а от бессмывленной {26EE0668-A00A-44D7-9371-BEB064C98683}\0\:: вовсе отказаться.

#39:  Author: dank1Location: Санкт-Петербург PostPosted: Mon Oct 05, 2015 22:50
    —
Flasher
Полностью согласен со всем вышесказанным. Рабочий стол и пр. делал как бонус (расчет был на то что бинд будет не на Enter а на другие хоткеи) так что лишние директории уберу, переменные введу, скрипт доделаю, вот только есть нюанс: энтер работает когда открыто меню все вроде бы хорошо, но если просто тыкнуть альт (фокус попадает на пункт "файл" но меню еще закрыто), то энтер опять не срабатывает (можно в принципе привыкнуть открывать стрелочкой вниз или отслеживать нажатие альт в скрипте и после альта посылать нажатие). Так то оно не страшно, но вдруг ты знаешь как и это побороть?

#40:  Author: FlasherLocation: Москва PostPosted: Tue Oct 06, 2015 11:43
    —
dank1
Пока не знаю. Можно, конечно, перед ENTER:: явное открытие прописать
Code:
Alt::SendInput {Alt}{DOWN}
, но это не решит вопрос в целом, т.к. есть ещё свёртка по Esc.

#41:  Author: dank1Location: Санкт-Петербург PostPosted: Tue Oct 06, 2015 16:36
    —
Flasher
Хм. Может и решит если еще Esc заменить двойным нажатием Esc:
Code:
Esc::SendInput {Esc}{Esc}

Вот только не создаст ли это проблем на всю ... деревню?

#42:  Author: FlasherLocation: Москва PostPosted: Tue Oct 06, 2015 16:41
    —
dank1
Всё, мне мега-спец привёл решение. Дополнил скрипт.

#43:  Author: dank1Location: Санкт-Петербург PostPosted: Tue Oct 06, 2015 16:54
    —
Flasher wrote:
Всё, мне мега-спец привёл решение. Дополнил скрипт.

Где ты такого нашел? Сейчас допишу скрипт.

#44:  Author: FlasherLocation: Москва PostPosted: Tue Oct 06, 2015 16:59
    —
dank1 wrote:
Где ты такого нашел?
Места знать надо. )))

А спешим ведь. Тут ещё проблема с цепочками навигации Alt+F11/F12 и панелью инструментов Alt+Shift+F11.


Last edited by Flasher on Fri Oct 30, 2015 22:02; edited 1 time in total

#45:  Author: dank1Location: Санкт-Петербург PostPosted: Tue Oct 06, 2015 18:47
    —
Вот скрипт:
 open_cpannel_element_v_1_1.ahk

Немного сократил условие проверки. Работает исправно в обычном режиме, но косячит в режиме дерева ( Ctrl + F8 ) так как не правильно получает пути (из тех методов WM_COPY что описаны у тебя) надо как то допиливать (моя магия не действует на такие вещи).
Flasher wrote:
А спешим ведь. Тут ещё проблема с цепочками навигации Alt+F11/F12 и панелью управления Alt+Shift+F11.

А это еще что такое? У меня при нажатии этих кеев ничего не происходит.

В общем еще есть над чем работать...


Last edited by dank1 on Wed Oct 07, 2015 20:39; edited 4 times in total

#46:  Author: AvadaLocation: Россия, Саратов PostPosted: Tue Oct 06, 2015 19:17
    —
dank1 wrote:
А это еще что такое? У меня при нажатии этих кеев ничего не происходит.

Про то, что это такое и что должно происходить — сюда и дальше по ссылкам.

#47:  Author: dank1Location: Санкт-Петербург PostPosted: Tue Oct 06, 2015 19:42
    —
По идее если можно проверить фокус главного меню, то можно и проверить отсутствие фокуса TMyListBox.
Avada
Спасибо, вроде понял что должно происходить, но ничего не происходит при нажатии, буду разбираться.

#48:  Author: FlasherLocation: Москва PostPosted: Tue Oct 06, 2015 19:48
    —
dank1 wrote:
Полностью согласен со всем вышесказанным.
Что-то не похоже.
Зачем в Проводнике открывать Администрирование, Приступая к работе, Программы и компоненты, Устройства и принтеры, Шрифты?
Переменных для родителей я так и не увидел. shell::: также нет смысла повторять всюду, достаточно один раз указать при вызове.

dank1 wrote:
проверить отсутствие фокуса TMyListBox
Панель всегда в фокусе, в том то и дело.
dank1 wrote:
но ничего не происходит при нажатии
По Enter? Если скрипт никакой не мешает, то см. переназначение в Разном.

#49:  Author: dank1Location: Санкт-Петербург PostPosted: Tue Oct 06, 2015 20:07
    —
Flasher wrote:
Что-то не похоже.
Зачем в Проводнике открывать Администрирование, Приступая к работе, Программы и компоненты, Устройства и принтеры, Шрифты?

Не помню чтобы обсуждали эти папки (речь вроде шла про раб. стол) впрочем хозяин барин можно просто удалить эти строчки (но все же проводник дает больше настроек в этих папках, например TC не отображает компоненты Windows, а в шрифтах нельзя настроить параметры)

С навигацией разобрался. Я ее отключал в настройках.
Flasher wrote:
Панель всегда в фокусе, в том то и дело.

По крайней мере когда теперь нажимаю Alt+F11/F12 и Alt+Shift+F11 то фокус теряется (по крайней мере визуально выделение с текущего файла в TMyListBox пропадает)
Flasher wrote:
shell::: также нет смысла повторять

Без папки Шрифты нету смысла, а с ней есть. Так как у этой папки отсутствует parsingname и переход по shell::: на эту папку невозможен.
Flasher wrote:
Переменных для родителей я так и не увидел

О чем речь?

#50:  Author: FlasherLocation: Москва PostPosted: Tue Oct 06, 2015 20:50
    —
dank1 wrote:
Не помню чтобы обсуждали эти папки (речь вроде шла про раб. стол)
Разве здесь перед скриптом я перечислял папки? Ты с чего начал топик? С жалобы на открытие пустых папок. А теперь что, другие нужнички появились? При чём тут ТС тогда? Внутреннюю команду для шрифтов тоже предлагаешь выкинуть? Проводник форэва? Surprised

dank1 wrote:
то фокус теряется
Но при этом заголовок панели остаётся активным. Если бы оно так было, то такая фикция сработала бы:
Code:
If MainMenuFocus(WinExist("A")) || (!WinActive("ahk_class TMyListBox1") && !WinActive("ahk_class TMyListBox2"))

dank1 wrote:
Без папки Шрифты нету смысла, а с ней есть. Так как у этой папки отсутствует parsingname и переход по shell::: на эту папку невозможен.
Не понял. При чём тут parsingname? shell пишется там где пишется, а не везде. А шрифты вообще лучше в ТС открывать по cd %WINDIR%\FONTS и нормально обозревать Листер-плагинами.
dank1 wrote:
О чем речь?
\\Все элементы панели управления\
\\Система и безопасность\
и т.д.

#51:  Author: dank1Location: Санкт-Петербург PostPosted: Tue Oct 06, 2015 22:01
    —
Flasher
Поправил замечания. Осталось решить вопрос с цепочками навигации Alt+F11/F12, панелью управления Alt+Shift+F11 и деревом каталогов Ctrl+F8. Может пора звать мега-спеца?

#52:  Author: FlasherLocation: Москва PostPosted: Tue Oct 06, 2015 23:31
    —
dank1
Лучше поправить не мои замечания, а скрипт, исходя из них. Даже на переменных толком не сэкономил. С цепочками наверняка решается. А вот с деревом и тулбаром - вряд ли.
dank1 wrote:
панелью управления Alt+Shift+F11
Не - управления, а - инструментов.

Кстати, подтверждение в части активности при Alt+F11/F12:
Code:
  Send_WM_COPYDATA(cmd:="A")
  ToolTip, % (Item == "L") ? "Активна левая панель" : "Активна правая панель"

#53:  Author: dank1Location: Санкт-Петербург PostPosted: Wed Oct 07, 2015 17:43
    —
Flasher
Хм. Чего то не догоняю, а если обе неактивны тогда Item чему равен?

#54:  Author: FlasherLocation: Москва PostPosted: Wed Oct 07, 2015 17:47
    —
dank1
Ничему. Закомментируй #IfWinActive и проверь в других окнах:
Code:
  Item := ""
  Send_WM_COPYDATA(cmd:="A")
  MsgBox, % (Item = "") ? "Панели неактивны" : "Активна одна из панелей"

#55:  Author: dank1Location: Санкт-Петербург PostPosted: Wed Oct 07, 2015 21:06
    —
Flasher
Поправил скрипт. Работает но через раз. В чем причина не ясно и честно говоря уже и не хочется выяснять так как все это дохлый номер. Если нельзя проверить отсутствие фокуса TMyListBox то проще забить и пользоваться первой версией скрипта или писать свой плагин на крайняк просить разработчика, а путь по которому мы пошли будет иметь кучу подводных камней: со сторонними плагинами (например Twinkey) в каждом меню (контекстном, меню избранных директорий и что их все перебирать? Да проще плагины научиться писать). Так что лично я остановлюсь на первой версии она простая как автомат калашникова и такая же безотказная. Проблему решили и ладно. Всем спасибо.

#56:  Author: FlasherLocation: Москва PostPosted: Wed Oct 07, 2015 21:24
    —
dank1
Я извиняюсь, конечно, но это бред:
Quote:
Send_WM_COPYDATA(cmd:="A")
If (Item <> "")
|| MainMenuFocus(WinExist("A"))
SendInput, {Enter}

#57:  Author: dank1Location: Санкт-Петербург PostPosted: Wed Oct 07, 2015 22:16
    —
Flasher wrote:
Я извиняюсь, конечно, но это бред:

Не за что извиняться, так как этот бред твой:
Flasher wrote:
Code:
(Item = "") ? "Панели неактивны" : "Активна одна из панелей"

#58:  Author: FlasherLocation: Москва PostPosted: Wed Oct 07, 2015 22:30
    —
dank1
С чего бы? Very Happy
Прояви чуточку внимания. Ты хочешь нажать Enter, когда Item имеет какое-то значение, т.е. по сути когда одна из панелей активна. У меня же проверяется отсутствие значения, при котором показывается сообщение "Панели неактивны", иначе - другой вариант. Посему в моём случае никакого бреда нет.

И да, чтобы ты понимал. Я тот кусочек привёл для убеждения в бесполезности проверки активности панели, а вовсе не для правки твоего кода.


All: Для ценителей работы в ТС выложил своё решение на TCKB.

#59:  Author: dank1Location: Санкт-Петербург PostPosted: Wed Oct 07, 2015 23:26
    —
Flasher
Не ошибается тот кто ничего не делает.

Flasher wrote:
All: Для ценителей работы в ТС выложил своё решение на TCKB.

Это пять)

#60:  Author: FlasherLocation: Москва PostPosted: Wed Oct 07, 2015 23:31
    —
dank1 wrote:
Это пять)
С небольшим плюсом. Wink

Upd: Но чтобы ты сильно не расстраивался, я там же добавил более компактный вариант с запуском любого из элементов ПУ, работающий с любой локалью.

#61:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Oct 09, 2015 22:26
    —
dank1
Flasher
Полагаю, что с учётом реального наполнения тема заслуживает переноса в Автоматизацию.

И, в продолжение темы, я бы не отказался ещё от скрипта, делающего всего-навсего следующее:
Если битность TC и системы совпадают, срабатывает команда cm_OpenControls. Если запущен 32-битный TC на 64-битной системе, в Проводнике открываются все элементы Панели управления, т.е. будет ::{21EC2020-3AEA-1069-A2DD-08002B30309D}

#62:  Author: FlasherLocation: Москва PostPosted: Fri Oct 09, 2015 23:22
    —
Avada
Попробуй:
Code:
GUID = "::{21EC2020-3AEA-1069-A2DD-08002B30309D}"
With CreateObject("WScript.Shell")
  Path = .Environment("Process")("COMMANDER_EXE")
  If .Environment("System")("PROCESSOR_ARCHITECTURE") = "AMD64" And InStrRev(_
  CreateObject("Shell.Application").NameSpace(.Environment("Process")("COMMANDER_PATH")).ParseName(_
  CreateObject("Scripting.FileSystemObject").GetFileName(Path)).ExtendedProperty("FileDescription"),32)_
  Then  .Run GUID Else .Run """" & Path & """ /S /O /L=::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\" & GUID
End With


Last edited by Flasher on Thu Oct 22, 2015 16:34; edited 5 times in total

#63:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Oct 09, 2015 23:41
    —
Flasher
В 64-битном TC на x64 вообще ничего не происходит, в 32-битном выполняется, судя по всему, cm_OpenControls, которая мне именно там и не нужна. Вариант с 32-битным TC на 32-битной системе смогу проверить только завтра.

#64:  Author: FlasherLocation: Москва PostPosted: Fri Oct 09, 2015 23:45
    —
Avada wrote:
в 32-битном выполняется, судя по всему, cm_OpenControls, которая мне именно там и не нужна
Нет, там открывается по cd {GUID}, как ты и просил, но это фактически то же самое что cm_OpenControls.
Почему ничего не происходит на TCx64 неясно.

#65:  Author: AvadaLocation: Россия, Саратов PostPosted: Fri Oct 09, 2015 23:56
    —
Flasher
Похоже, либо ты меня не понял, либо я тебя. Мне в связке 32-битного TC с 64-битной системой не нужны ни cm_OpenControls, ни любой аналог, открывающий то же самое таким же образом. Тут панели TC должны быть не при делах (за явной бесполезностью в данном случае), требуется только открытие в Проводнике.

#66:  Author: FlasherLocation: Москва PostPosted: Sat Oct 10, 2015 00:06
    —
Avada wrote:
ты меня не понял
Именно. Поправил. Проверь на обоих ТС.

#67:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Oct 10, 2015 00:46
    —
Flasher
Вот это дело! На x64 — то, что требуется. На 32-битной системе проверка будет завтра.

#68:  Author: FlasherLocation: Москва PostPosted: Sat Oct 10, 2015 00:52
    —
Avada
Гуд. А на 32-битной я и так проверил.

#69:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Oct 10, 2015 00:54
    —
Flasher
Отлично. Большое спасибо.
P.S. На 32-битной XP не работает. Это можно учесть? Но проверять я смогу только по рабочим дням.

#70:  Author: FlasherLocation: Москва PostPosted: Sat Oct 10, 2015 12:04
    —
Avada wrote:
Это можно учесть?
Учёл. Первую строку исправил. В XP по GUID без родителя не откроет.

#71:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Oct 10, 2015 12:32
    —
Flasher
Да, смог проверить сразу, теперь работает. А с GUID в XP мне в данном случае и не требуется.

#72:  Author: FlasherLocation: Москва PostPosted: Sat Oct 10, 2015 12:39
    —
Avada
Имелся в виду вообще любой вариант запуска (что по cd|/S /L=::{GUID} (в скрипте вместо внут. команды), что по ::{GUID} аля из комстроки).
Т.е. в XP из трёх вариантов-аналогов для последующих версий Windows в отношении запуска хоть в ТС хоть в Проводнике приемлем только последний:
Code:
::{21EC2020-3AEA-1069-A2DD-08002B30309D}
::{26EE0668-A00A-44D7-9371-BEB064C98683}\0
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}

Или тебе принципиален запуск именно по внут. команде?

#73:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Oct 10, 2015 18:18
    —
Flasher
Нет, не принципиален. Как говорится, важен не метод, а результат.

#74:  Author: FlasherLocation: Москва PostPosted: Sat Oct 24, 2015 16:28
    —
Avada
Я пару дней назад правил скрипт, чтобы он ещё и в WinXPx64 работал. Понятно, что редкая птица, но мало ли. Также убрал в запуске из Проводника GUID от "Мой компьютер", чтобы он там не фигурировал в навигации, да и сам запуск в таком виде немного побыстрее будет.

#75:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Oct 24, 2015 18:46
    —
Flasher
Понял. C 64-битной XP я пас. На 64-битной Семёрке всё нормально, на 32-битной XP посмотрю, видимо, послезавтра.



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group