Что нового

восстановление предыдущего выделения объектов в проводнике по комбинации клавиш

Alexey

Новичок
Сообщения
171
Репутация
0
Версия AutoIt: 3.3.0.0 ( win xp pro sp 2)

Описание: хорошо бы иметь в наличии скрипт, который бы:

- висел в памяти и фиксировал (допустим, в какой-нибудь файл c:\windows\temp\selected-objects.log) каждое выделение папок/файлов в проводнике (понятное дело, имеется в виду только его правая часть, без дерева папок)

- по нажатию определённой комбинации клавиш восстанавливал предыдущее выделение

Примечания: эта возможность присутствует, к примеру, в файловом менеджере "xyplorer" и её очень не хватает в проводнике, а иногда она может стать просто спасительной, скажем, при случайном клике мышкой
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
ExSelRes - Explorer Selection Restorer:

* Отслеживает и запоминает выделение файлов и папок в каждой(?) папке проводника, с целью последующего восстановления выделения.
* Программа работает в тихом режиме, по завершению пишет в лог файл (в текущей папке программы) данные о выделенных объектах, при следующем запуске считывает их.
* «Ctrl + Shift + R» восстанавливает последнее выделение текущей папки (поддерживается «Рабочий стол»).
* «Ctrl + Shift + Q» завершает работу программы.

:ok:
 
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
пока единственное, что у меня работает, так это "Ctrl + Shift + Q" :smile:

мои действия:
создал пробную папку z; в неё закинул скрипт, скомпилировал его сюда же; тут же создал 3 пробных под-папки, в одной из них - 6 пробных файлов;
запускаю exe - что ни выделяю, ничего не происходит, log не создаётся
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Alexey [?]
запускаю exe - что ни выделяю, ничего не происходит, log не создаётся
Я же написал:
[?]
Программа работает в тихом режиме, по завершению пишет в лог файл
и также:
[?]
«Ctrl + Shift + R» восстанавливает последнее выделение текущей папки

Единственное что может быть, так это раскладка клавиатуры по умолчанию, она должна быть английская, иначе нужно добавить HotKeySet("^+к", "_ExplorerRestoreSelection") в скрипт.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
CreatoR, у тебя уже есть ооооочень большая коллекция своих скриптов, утилит, программ и т.д., и ты даже не представляешь, сколько будет разочарования, когда ты перейдешь на Windows 7 (а я думаю, что это скоро случится) и обнаружишь, что половина из них просто откажутся работать должным образом без очень серьезных доработок. Я с этим уже столкнулся...

:'(

Как и здесь, ExSelRes настолько "пропитана" XP, что с Vista/7 просто несовместима, включая функции _ExplorerGetPath() и _ExplorerRestoreSelection(). По поводу первой я пока ничего не могу сказать, но вместо _ExplorerRestoreSelection() можно использовать _WinAPI_ShellOpenFolderAndSelectItems() из WinAPIEx UDF, там есть толковый пример.

:smile:
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
у тебя уже есть ооооочень большая коллекция своих скриптов, утилит, программ и т.д., и ты даже не представляешь, сколько будет разочарования, когда ты перейдешь на Windows 7
Представляю, у меня ноутбук с Win 7 ;)
Я пока не спешу на неё переходить, как и большая часть потребителей Windows на нашей планете :smile:

вместо _ExplorerRestoreSelection() можно использовать _WinAPI_ShellOpenFolderAndSelectItems
Или так:
Код:
Run("Explorer.exe /select," & @ScriptFullPath)

или оно на работает в Win 7?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
CreatoR сказал(а):
...или оно на работает в Win 7?

Оно открывает множество окон и не знаю, будет ли работать со списком. А _WinAPI_ShellOpenFolderAndSelectItems() работает отлично как на XP, так и выше. Да и предназначена именно для этого.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Yashied [?]
_WinAPI_ShellOpenFolderAndSelectItems
Единственная проблема, это восстановление окна из развёрнутого режима, в нашем случае это немного не удобно, т.к идея в том чтобы безшумно восстановить выделение.

В Win7 нет SysListView32?
Надо будет позже проверить...
 
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
CreatoR
Я же написал: ... Программа работает в тихом режиме, по завершению пишет в лог файл
и также: ... «Ctrl + Shift + R» восстанавливает последнее выделение текущей папки

- никакого log-файла у меня не создаётся, ни во время работы программы, ни по её завершении; соответственно, ничего в log не пишется
- Ctrl + Shift + R у меня ничего не восстанавливает

дело не в раскладке, я попробовал заменить ctrl+shift+R на win+8 - результат тот же
ты лучше без упрёков объясни чётко, чтó я делаю не так

Yashied
хочу просто заметить (не спора ради), что не вижу ни малейшего смысла мигрировать на семёрку aka 6.1 (как по мне - бездарный и бессмысленный продукт). естественно, мнение своё никому навязывать не буду. надеюсь только, что жизнь не заставит на эту ОС переходить
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Alexey [?]
дело не в раскладке
Попробуй переключить её на английскую.

я попробовал заменить ctrl+shift+R на win+8 - результат тот же
Как? должно быть «#8».

ты лучше без упрёков объясни чётко, чтó я делаю не так
А я не упрекаю.

Попробуй также обновить версию AutoIt до последней, хотя я проверял и на 3.3.0.0, всё работает.
 
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
Попробуй переключить её на английскую.
английская и была включена

Как? должно быть «#8».
да, вот как я сделал: HotKeySet("#8", "_ExplorerRestoreSelection")

я проверял и на 3.3.0.0, всё работает
тогда, очевидно, дело не в версии

давай попробуем детально разобраться:

есть путь c:\z, скачиваю туда Explorer Selection Restore.au3, делаю из него exe-файл, запускаю этот exe
есть путь c:\z\1, в папке 1 - 4 файла (1.txt, 2.txt, 3.txt, 4.txt)
допустим, у меня были выделены 1.txt и 3.txt, затем выделение было снято

вот на этом примере объясни, пожалуйста, как у тебя всё работает, какую последовательность действий я должен совершить, чтобы вновь увидеть 1.txt и 3.txt выделенными
 
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
честно, совсем не понял я, к чему этот ролик, если, по сути, его содержимое ничем абсолютно не отличается от действий, описанных мной ещё в моём втором (!) сообщении этой темы
(понятное дело, что там подразумевалось, что я прочитал твоё первое сообщение и ctrl+shift+R использовал)

очень хочу всё-таки разобраться, почему у меня скрипт не работает. ещё раз:

- есть путь c:\z, скачиваю туда Explorer Selection Restore.au3, компилирую exe-файл, запускаю этот exe
- есть путь c:\z\1, в папке 1 - 4 файла (1.txt, 2.txt, 3.txt, 4.txt)
- выделяю 1.txt и 3.txt, затем выделение снимаю
- нажимаю ctrl+shift+R
- ни на одном из четырёх файлов выделение не появляется

от безысходности пробовал ещё так:

- есть путь c:\z, скачиваю туда Explorer Selection Restore.au3, компилирую exe-файл, запускаю этот .exe
- есть путь c:\z\1, в папке 1 - 4 файла (1.txt, 2.txt, 3.txt, 4.txt)
- выделяю 1.txt и 3.txt, затем выделение снимаю
- нажимаю ctrl+shift+Q
- запускаю .exe через свою заранее назначенную комбинацию клавиш
- нажимаю ctrl+shift+R
- ни на одном из четырёх файлов выделение не появляется

log в любом случае нигде не создаётся
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Alexey [?]
совсем не понял я, к чему этот ролик, если, по сути, его содержимое ничем абсолютно не отличается от действий, описанных мной ещё в моём втором (!) сообщении этой темы
Он показывает, какие действия делаю я, и что у меня это работает.

выделяю 1.txt и 3.txt, затем выделение снимаю
Как, случаем не клавиатурой? :D

компилирую exe-файл
А если без компиляций?

log в любом случае нигде не создаётся
Права на запись имеются?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Нашёл проблему, в классах должно быть ExploreWClass а не ExplorerWClass.
 
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
в классах должно быть ExploreWClass а не ExplorerWClass
теперь дело явно сдвинулось. вот только далеко не всё пока благополучно. если я верно понял, правильного восстановления не происходит в случае, если объекты выделялись с использованием ctrl
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Автор
A

Alexey

Новичок
Сообщения
171
Репутация
0
Ну почему, если при выделений была нажата кнопка мышки (левая), то скрипт запоминает выделение.
для выделения объектов в правой части проводника я никогда не нажимаю ЛКМ - ужé много лет пользуюсь исключительно методом "hover-selection" (выделение при наведении курсора)
 
Верх