Пожалуйста
Хотя действительно не важно реально или нет, жду помощи.
Забыл одно исправление указать. См. выше.
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Чем ждать, лучше обратиться в места специализированные.ApceH писал(а):жду помощи.
Больше не возникало.---------------------------
Total Commander 8.0Я6
---------------------------
Invalid pointer operation.
Invalid pointer operation
Windows 7 SP1 6.1 (Build 7601)
Please report this error to the Author, with a description
of what you were doing when this error occurred!
Stack trace (x64):40B13D
40BDCA 8907FB 89BE90 7BEDFE 7BF40A 7D85EB 7B9D5D 7B9D47
7B9D47 7BC738 7CE25E 43405E 434554 698294 440462 431944
Press Ctrl+C to copy this report!
Continue execution?
---------------------------
Да Нет
---------------------------
1.1.1.14) TerminateAfterWaitПри выполнении команды [p?q|...] ожидать завершения процесса. Время указывается в миллисекундах. Особые значения: 0 — не ждать, –1 — ждать бесконечно. Реальное время ожидания может быть большим, так как это же значение применяется в SendMessageTimeout при попытке закрыть очередное окно процесса. Никакого принудительного закрытия окон не осуществляется, но по окончании перебора окон процесса снова осуществляется ожидание в течение CloseProcessWait посредством WaitForSingleObject.
Кроме того, нужно учитывать, что для корректного закрытия процесса сообщение WM_CLOSE шлётся каждому окну процесса. Окна перечисляются примерно так: EnumWindows(@EnumWindowsProc, PID). Если бы я слал только главному окну, то это было бы гораздо менее надёжно. Простейший пример: открытый диалог копирования молчаливо воспрепятствует закрытию. Возможно Г. не правильно реализовал wndproc в 8-ке, внёс какие-то зависимости... "Invalid pointer operation" вообще как-то неприятно звучит... Надо внимательно тестировать.По завершении ожидания завершения процесса в рамках команды [p?q|...], если процесс так и не завершился самостоятельно, завершить его принудительно вызовом TerminateProcess.
Не проверял.ApceH писал(а):С 7.56а такое бывало хоть раз?
ApceH писал(а):Какое действие совершается? Я предполагаю [per или [peq.
Код: Выделить всё
[PostActions]
per|TOTALCMD64.EXE>>>ApceH писал(а):В самом kIT UP корректное закрытие процесса всё же, признаю, не так корректно, как должно быть.
Т. е. не работает, а значит совсем не корректное.ask-rus писал(а):Надолго (5-8 сек.) задумывается, после запускает новый экземпляр.
Это повод для репорта.---------------------------
Total Commander 8.0Я6
---------------------------
Invalid pointer operation.
Invalid pointer operation
Windows 7 SP1 6.1 (Build 7601)
Please report this error to the Author, with a description
of what you were doing when this error occurred!
Stack trace (x64):40B13D
40BDCA 8907FB 89BE90 7BEDFE 7BF40A 7D85EB 7B9D5D 7B9D47
7B9D47 7BC738 7CE25E 43405E 434554 698294 440462 431944
Press Ctrl+C to copy this report!
Continue execution?
---------------------------
Да Нет
---------------------------
Перейду на нее сегодня.ApceH писал(а):Кстати, почему не 8b8?
Да.ApceH писал(а):И это 64-битная, да?
Тебе следовало бы и на ней тестировать свою утилиту.ApceH писал(а):Может в этом дело?
Он здесь.ApceH писал(а):Репорт в любом случае нужен.
Код: Выделить всё
procedure CloseProcessByPID(PID: Integer);
function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): Boolean; stdcall;
var
PID: Cardinal;
Res: Cardinal;
begin
GetWindowThreadProcessId(hwnd, @PID);
if PID = Cardinal(lParam) then
begin
SendMessageTimeout(hwnd, 16, 0, 0, SMTO_NORMAL, MainInfo.Configuration.CloseProcessWait, Res);
end;
Result := True;
end;
begin
EnumWindows(@EnumWindowsProc, PID);
end;