Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.08.14;
Скачать: CL | DM;

Вниз

Вылетает с ошибкой (периодически)   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2016.08.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.004 c
4-1279041626
ms.krabs
2010-07-13 21:20
2016.08.14
Вылетает с ошибкой (периодически)


1-1340038658
IGray
2012-06-18 20:57
2016.08.14
Как получить ссылку на модальную форму из OnModalBegin?


2-1418812220
garun
2014-12-17 13:30
2016.08.14
[TListView]: иконки в SubItems


2-1418547849
TQuickReport
2014-12-14 12:04
2016.08.14
Имитировать нахатие кнопок


1-1340133641
DmitriyG.
2012-06-19 23:20
2016.08.14
Проверка подписи файла