Страница 1 из 1

"замена" explorer при попытке его открытия

Добавлено: Вс окт 19, 2014 7:02 pm
alexgauss1994
Сделал скрипт для прибития окна explorer при его открытии какой-либо программой (если оно "содержит" какой-то реальный адрес, а не, к примеру, "панель управления")

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

#include <Process.au3>
#include <String.au3>

Func GetAddress($addressText)
	if StringInStr($addressText, ": ")>0 then
		Local $arr = _StringExplode($addressText, ": ", 1)
		Return $arr[1]
	else
		Return ""
	endif
EndFunc

Func RunFM($path)
	Run("C:\Unreal Commander\Uncom.exe """ & $path & """")
EndFunc

$addressControlId = 1001
While 1=1
	$wnd = WinGetHandle("")
	$process = WinGetProcess($wnd)
	$processName = _ProcessGetName ($process)
	if $processName="explorer.exe" then
		$address = GetAddress(ControlGetText($wnd, "", $addressControlId))
		if FileExists($address) then
			WinClose($wnd, "")
			RunFM($address)
		endif
	endif
	sleep(100)
Wend
Костыль, да (начиная с постоянно висящего в памяти процесса со скомпиленным скриптом), но всё же лучше "проводника". Хотелось бы иметь что-то подобное в составе Unreal-а (хотя тут уже, ИМХО, подход с постоянно висящим процессом не уместен).

p.s. предыдущая тема как-то не отобразилась, хотя вроде ни сообщений на тему премодерации, ни ошибок не было.

UPD. Пофикшена работа с содержащими пробелы путями, обновленный скрипт в сообщении (см. код выше)

Добавлено: Пн окт 20, 2014 1:34 pm
Qwertiy
Но зачем???

Re: "замена" explorer при попытке его открытия

Добавлено: Пн окт 20, 2014 4:22 pm
alexgauss1994
Ну вот берем (наверное, почти любой) браузер/торрент-клиент/etc. => "показать в папке" (условно)... И видим таки эксплорер. Скорее всего, если я выбираю такой пункт, а не что-то с его (объекта) открытием - мне нужно его переместить/удалить/переименовать/etc... В общем действие слегка отличное от 1 дабл-клика :-)

А к чему именно такое решение,а не со стороны этой программы - таки не везде можно это поведение изменить.

Добавлено: Пн окт 20, 2014 7:40 pm
Qwertiy
Можно менять способ открытия папок в реестре. Под собственную ответственность, естественно ;)
https://forum.unrealcommander.net/viewto ... =22&t=1024
http://bbs.vbstreets.ru/viewtopic.php?f=34&t=44054

Re: "замена" explorer при попытке его открытия

Добавлено: Пн окт 20, 2014 9:40 pm
alexgauss1994
Беглое прочтение говорит, что не поможет, т.к. меняется поведение уже в рамках проводника, а не "глобально". Или я ошибаюсь?

Добавлено: Вт окт 21, 2014 11:43 am
Qwertiy
Наверное да. Не помню точно. Но весьма вероятно, что зависит от того, что именно делает программа - default action или явно вызывает проводник.

Re: "замена" explorer при попытке его открытия

Добавлено: Вт окт 21, 2014 1:46 pm
alexgauss1994
Ну вот я и клоню к тому, что зависит от программы и поменять если и можно(? В тех, с которыми сталкивался - не замечал.), то не везде.
А такой костыль таки достаточно универсален, хотя наверняка есть лучший метод.

Re: "замена" explorer при попытке его открытия

Добавлено: Вт янв 27, 2015 9:15 am
avmaksimov
А я с возрастом все больше замечаю, что (меня как будто кто-то подменил) все больше пользуюсь Проводником в описанных случаях... Отображать файлы, запускать на воспроизведение и другие простые операции он выполняет на ура!... UC же полезен, когда нужны вкладки, копирование и много лазить по дисковой структуре.