PDA

Показать полную графическую версию : Не создавать отдельный процесс explorer.exe при открытии папки


test009
21-02-2021, 14:28
Из программы cmd.exe запускаю такую команду:
explorer.exe /select,"c:\windows\system32\calc.exe"

Ее суть в том, чтобы открыть папку c:\windows\system32 и найти в ней файл calc.exe, выделив его в огромном списке файлов.
Calc.exe - для примера. У меня в скриптах туда подставляется каждый раз новый файл.

Проблема в том, что на каждый вызов этой команды в диспетчере задач появляется отдельный процесс с такими параметрами:
C:\Windows\explorer.exe /factory,{75dff2b7-6936-4c06-a8bb-676a7b00b24b} -Embedding
Со временем их возникает с десяток.

Я замечал, что explorer.exe как-то умеет открывать папки, не создавая лишних процессов в памяти.
Процесс explorer.exe - один всегда висит в памяти.
Не хочу расходовать попусту память, ее мало на ноутбуке.
Можно ли что-то придумать?

Поиском по коду 75dff2b7-6936-4c06-a8bb-676a7b00b24b нашел занимательную статью про шерлока холмса, но как решить мой вопрос - не понял.

Vadikan
21-02-2021, 16:09
test009, на мой взгляд неправильно поставлена задача (https://www.outsidethebox.ms/13148/#_Toc314611149).
суть в том, чтобы открыть папку c:\windows\system32 и найти в ней файл calc.exe, выделив его в огромном списке файлов.
Calc.exe - для примера. У меня в скриптах туда подставляется каждый раз новый файл »
У вас задача папок побольше открыть? Если нет, то надо думать над тем, как автоматизировать задачу, но знаете ее только вы пока.

test009
21-02-2021, 22:03
Зачем вы так?

Задача - "перелететь" к файлу, который редактирую например в Notepad++ или в Visual Studio, в SourceTree или другой программе, которая так не умеет, с помощью хоткея, который я настроил в AutoHotkey для себя.
Для этого я получаю полный путь к файлу и запускаю эту команду, чтобы к нему быстро перелететь по F12.

Vadikan
21-02-2021, 22:22
Зачем вы так? »
Как? Вы ведь фактически спросили "как не запускать новый процесс, запуская новый процесс" :)

Задача - "перелететь" к файлу »
Все-таки рискну еще раз спросить про задачу. Допустим, вы перелетели к файлу. Дальше что? Любуетесь на него?

test009
22-02-2021, 00:29
Допустим, вы перелетели к файлу. Дальше что? Любуетесь на него? »
Дальше - процесс не определен и всегда разный, по ситуации.
Иногда открываю hex-editor-ом, иногда копирую в другую папку или отправляю коллеге по скайпу.

Iska
22-02-2021, 00:31
Есть и другой путь — использование Automation. Например:
; Sample

q::
sPath := "C:\Мои проекты\0338"
sFile := "0001.vbs"

oShell := ComObjCreate("Shell.Application")
oShell.Open(sPath)
Sleep, 500
WinGet, hWnd, ID, A

oFolder := oShell.NameSpace(sPath)
oFolderItem := oFolder.ParseName(sFile)

for oWin in oShell.Windows {
if (oWin.HWND = hWnd) {
oWin.Document.SelectItem(oFolderItem, 0x1D)
break
}
}

oFolderItem := ""
oFolder := ""
oWin := ""
oShell := ""
return
(вместо сравнения hwnd можно, например, сравнивать путь папки с искомым).

Попробуйте приспособить под Ваше «Открыть и выделить».

Дальше - процесс не определен и всегда разный, по ситуации.
Иногда открываю hex-editor-ом, иногда копирую в другую папку или отправляю коллеге по скайпу. »
Тогда давно пора перейти на какой-нибудь более вменяемый файловый менеджер.

Vadikan
22-02-2021, 10:29
Задача - "перелететь" к файлу, который редактирую »
Дальше - процесс не определен и всегда разный, по ситуации.
Иногда открываю hex-editor-ом, иногда копирую в другую папку или отправляю коллеге по скайпу. »
В таком случае я бы посоветовал сохраненный поиск (https://www.outsidethebox.ms/9980/#save), поскольку он позволяет быстро отобразить новые файлы заданных типов. Да, нужный файл не выделяется, но он будет сверху, если настроить сортировку/группировку рез-тов поиска.

Бонус: сохраненный поиск доступен в диалогах Открыть/Сохранить как (https://www.outsidethebox.ms/11061/#_Toc277327376), что мега-удобно для отправки файлов.




© OSzone.net 2001-2012