Текущий архив: 2002.04.18;
Скачать: CL | DM;
Вниз
Почему это не хочет корректно работать в потоке? Найти похожие ветки
← →
lipskiy (2002-04-06 16:09) [0]Есть функция проверки доступности URL (взята из каких-то FAQов). Когда вызываю ее из основного потока - все ок. А когда вызываю ее из своего пользовательского потока, то тоже отрабатывает нормально и даже программа дальше работает, но только до того момента, когда я активирую любое другое окна (свое или чужое - неважно, главное что мышкой активируется любое другой окно) вылетает ошибка raised exception class EWin32Error with message "Ошибка Win32. Код 1400. Недопустимый дескриптор окна" и при нажатии ОК и попытке продолжить - новое окно ошибки - нарушение доступа по адресу... в модуле ntdll.dll, после чего прога слетает напрочь.
Что это значит?
Вот эта функция:
function CheckUrl(URL:string):boolean;
var
hSession, hfile, hRequest: hInternet;
dwindex,dwcodelen :dword;
dwcode:array[1..20] of char;
res : pchar;
begin
if pos("http://",lowercase(url))=0 then
url := "http://"+url;
Result := false;
hSession := InternetOpen("InetURL:/1.0",
INTERNET_OPEN_TYPE_PRECONFIG,nil, nil, 0);
if assigned(hsession) then
begin
hfile := InternetOpenUrl(
hsession,
pchar(url),
nil,
0,
INTERNET_FLAG_RELOAD,
0);
dwIndex := 0;
dwCodeLen := 10;
HttpQueryInfo(hfile, HTTP_QUERY_STATUS_CODE,
@dwcode, dwcodeLen, dwIndex);
res := pchar(@dwcode);
result:= (res ="200") or (res ="302");
if assigned(hfile) then
InternetCloseHandle(hfile);
InternetCloseHandle(hsession);
end;
end;
← →
troits (2002-04-06 17:12) [1]Создал приложение с несколькими формами, в потоке (TThread) вызываю CheckUrl - все нормально. Потом можно переключаться между формами. Видимо, ошибка в другом!
← →
lipskiy (2002-04-06 21:42) [2]Хм, ну да, вероятно.
Тогда труба, как это искать - методики себе не представляю...
Страницы: 1 вся ветка
Текущий архив: 2002.04.18;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.116 c