Latest post of the previous page:
Это чисто гуёвый процесс. Он в GetConsoleProcessList отображаться не должен.
Latest post of the previous page:
Это чисто гуёвый процесс. Он в GetConsoleProcessList отображаться не должен.
Да, если есть процессы как таковые, то печатается.
В этом можно убедиться просто открыв Диспетчер Задач (или как это сейчас называется).
Так не бывает, значит функция отработала с ошибкой, что предусмотрено скриптом (должно быть сообщение об ошибке)
Извиняюсь, написал, не подумав. Разумеется, не 0, а 1, т.к. сам Фар тоже процесс.
Всё так, он и висит, голубчик. Буду разбираться. Результаты напишу.
Предлагаю сделать код вывода в ExitFAR более лаконичным:
io.write("Warning: ",ListLength," console processes detected\n","PIDs: ",table.concat(pids,' '))
[b]CtrlW[/b]
), отфильтрованное по этим PID'ам?Ок
При выходе проблематично, а в макросе можно вызвать через postmacro Task List, пройтись в цикле по пунктам и скрыть ненужные.
добавить к скрипту следующий макрос:
Code: Select all
local F = far.Flags
Macro { description="check console processes in Task list";
area="Common"; key="CtrlW";
uid="1CACFB07-B3FA-483D-BC65-9AB8C86F73FC";
action=function()
Keys"CtrlW"
local ListLength,pids = getConsoleProcessPIDS()
if ListLength>1 then mf.beep() end
local hDlg,ID = far.AdvControl(F.ACTL_GETWINDOWINFO).Id,1
local list = far.GetDlgItem(hDlg, ID)[6] --[6] Selected/ListItems: integer/table
local item
for i=#list,1,-1 do
item = list[i]; local pid = tonumber(item.Text:match"%d+")
for j=1,#pids do
if pids[j]==pid then
hDlg:send(F.DM_LISTUPDATE, ID,{Index=i,Text=item.Text,Flags=bor(item.Flags,F.LIF_CHECKED)})
end
end
end
end;
}
Спасибо, здорово, но почему-то у меня ни один Notepad, запущенный через
start /b cmd /c Notepad.exe
, в меню не выделяется (выделяется только сам Фар). И это при том, что в списке первым макросом они все выводятся.Code: Select all
11892 │ Untitled - Notepad
12896 │ Untitled - Notepad
Code: Select all
Warning: 3 console processes detected
PIDs: 6340 11504 14308
getConsoleProcessPIDs
(последняя буква строчная).Я себе сделал и использую эту ф-ю и в обработчике
ExitFAR
, и в макросе).Я думаю, в гавке паттерн стоит обрамить в ^(...)$ для точного соответствия. Иначе ищется по подстроке. Ошибка маловероятна, но возможна.HaRT wrote:Я себе сделал дёшево и сердито
Итак, повторюсь, у меня зависает на выходе из процесса far.exe, если при неотрубленном расширении от avast! через EMenu было вызвано (и сразу закрыто) Контекстное меню Проводника. (без прочих плагинов)
FreeLibrary
вызывается для EMenu.dll.Code: Select all
sqlite3 history.db ".recover" | sqlite3 history_.db
Code: Select all
sqlite3 history.db "PRAGMA integrity_check"