Форум: "WinAPI";
Текущий архив: 2016.08.14;
Скачать: [xml.tar.bz2];
ВнизВылетает с ошибкой (периодически) Найти похожие ветки
← →
ms.krabs (2010-07-13 21:20) [0]Есть проблема, запускаю поток который должен закрывать зависшие приложения. Но периодически возникает AcessViolation, т.е. 2 из 3 - ошибка. Без него проблем нет. Проблемы в CloseWin нет.
procedure CloseWin(h:HWND); //Убивание процесса
var
PID:Cardinal;
hProc:Cardinal;
begin
GetWindowThreadProcessId(h,PID);
hProc:=OpenProcess(PROCESS_TERMINATE,true,PID);
TerminateProcess(hProc,0);
CloseHandle(hProc);
end;
procedure Close; //Поиск зависших окон
var
h:HWND;
n:Array[0..255] of Char;
begin
h:=FindWindow(nil,nil);
while (h<>0) do
begin
GetWindowText(h,n,255);
if (pos(CAPTION,n)>0) and (pos("отвечает",n)>0) then
begin
CloseWin(h);
Exit;
end;
h := GetNextWindow(h,GW_HWNDNEXT);
end;
end;
procedure CloseThread; //Поток поиска
begin
while true do
begin
Close;
Sleep(10000);
end;
end;
← →
Leonid Troyanovsky © (2010-07-14 07:56) [1]
> ms.krabs (13.07.10 21:20)
> n:Array[0..255] of Char;
Чего это сразу 255?
> FindWindow(nil,nil);
EnumWindows
> pos(CAPTION,n)
AnsiStrPos
> procedure CloseThread; //Поток поиска
Чего-чего?
--
Regards, LVT.
← →
brother © (2010-07-15 08:39) [2]Имена процедур не соответсвуют коду внутри, вот и путаница...
← →
Leonid Troyanovsky © (2010-07-15 08:53) [3]
> brother © (15.07.10 08:39) [2]
> Имена процедур не соответсвуют коду внутри, вот и путаница.
Не путаница, а AV.
Потому, что функция потока не соответствует ни одному
разумному прототипу.
И, во-ще, оный код легче выкинуть, чем поправить.
--
Regards, LVT.
← →
brother © (2010-07-15 09:30) [4]согласен
← →
Anatoly Podgoretsky © (2010-07-15 10:41) [5]
> Leonid Troyanovsky © (15.07.10 08:53) [3]
По нашему по русски - и переписать все нафиг.
← →
_Юрий (2010-07-16 21:38) [6]Вероятно, поток создается через API, и флаг для менеджера памяти не выставлен
← →
Deltas © (2010-07-16 23:39) [7]
> Leonid Troyanovsky © (15.07.10 08:53) [3]
> Потому, что функция потока не соответствует ни одному
> разумному прототипу.
А там нет функции потока. Можно только предположить, что CloseThread вызывается из функции потока.
ms.krabs (13.07.10 21:20) [0]
Показывайте как поток создаете.
← →
Leonid Troyanovsky © (2010-07-17 12:28) [8]
> Deltas © (16.07.10 23:39) [7]
> А там нет функции потока.
Я собс-ными глазами прочел комментарий,
и мое предположение ничем не хуже
> Можно только предположить, что CloseThread вызывается из
> функции потока.
> Показывайте как поток создаете.
Автор давно уже загорает на берегу водоема.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2016.08.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.001 c