"замена" explorer при попытке его открытия
Добавлено: Вс окт 19, 2014 7:02 pm
Сделал скрипт для прибития окна explorer при его открытии какой-либо программой (если оно "содержит" какой-то реальный адрес, а не, к примеру, "панель управления")
Костыль, да (начиная с постоянно висящего в памяти процесса со скомпиленным скриптом), но всё же лучше "проводника". Хотелось бы иметь что-то подобное в составе Unreal-а (хотя тут уже, ИМХО, подход с постоянно висящим процессом не уместен).
p.s. предыдущая тема как-то не отобразилась, хотя вроде ни сообщений на тему премодерации, ни ошибок не было.
UPD. Пофикшена работа с содержащими пробелы путями, обновленный скрипт в сообщении (см. код выше)
Код: Выделить всё
#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
p.s. предыдущая тема как-то не отобразилась, хотя вроде ни сообщений на тему премодерации, ни ошибок не было.
UPD. Пофикшена работа с содержащими пробелы путями, обновленный скрипт в сообщении (см. код выше)