Проблема с InternetSetStatusCalllback из WinInet
От:
ting
Дата: 03.07.02 05:47
Оценка:
Добрый день!
Описываю я вот такую функцию для Callback'а:
void __stdcall InternetCallback(
HINTERNET hInternet,
DWORD dwcontext,
DWORD dwInternetStatus,
LPVOID lpvStatusInformation,
DWORD dwStatusInformationLength
)
{
// тута код
}
Потом InternetOpen и пытаюсь к hInternet приделать эту фукцию:
DWORD dwErr;
hInternet = InternetOpen("my agent" ,
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0);
dwErr = GetLastError();
if (!dwErr)
{
dwISC = InternetSetStatusCallback(hInternet,
(INTERNET_STATUS_CALLBACK) InternetCallback);
dwErr = GetLastError(); // Вот тут выдается код ошибки 5...
}
5 — это помоему Отказано в доступе...
Что я не так делаю?
Re: Проблема с InternetSetStatusCalllback из WinInet
От:
Flea
Дата: 03.07.02 06:29
Оценка:
Здравствуйте ting, Вы писали:
T>Добрый день!
T>Описываю я вот такую функцию для Callback'а:
T>T>void __stdcall InternetCallback(
T> HINTERNET hInternet,
T> DWORD dwcontext,
T> DWORD dwInternetStatus,
T> LPVOID lpvStatusInformation,
T> DWORD dwStatusInformationLength
T>)
T>{
T> // тута код
T>}
T>
T>Потом InternetOpen и пытаюсь к hInternet приделать эту фукцию:
T>T>DWORD dwErr;
T>hInternet = InternetOpen("my agent" ,
T> INTERNET_OPEN_TYPE_PRECONFIG,
T> NULL,
T> NULL,
T> 0);
T>dwErr = GetLastError();
T>if (!dwErr)
T>{
T> dwISC = InternetSetStatusCallback(hInternet,
T> (INTERNET_STATUS_CALLBACK) InternetCallback);
T> dwErr = GetLastError(); // Вот тут выдается код ошибки 5...
T>}
T>
T>5 — это помоему Отказано в доступе...
T>Что я не так делаю?
Нужно так:
hInternet = InternetOpen("my agent",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
INTERNET_FLAG_ASYNC);
Re: Проблема с InternetSetStatusCalllback из WinInet
От:
Flea
Дата: 03.07.02 06:29
Оценка:
Здравствуйте ting, Вы писали:
T>Добрый день!
T>Описываю я вот такую функцию для Callback'а:
T>T>void __stdcall InternetCallback(
T> HINTERNET hInternet,
T> DWORD dwcontext,
T> DWORD dwInternetStatus,
T> LPVOID lpvStatusInformation,
T> DWORD dwStatusInformationLength
T>)
T>{
T> // тута код
T>}
T>
T>Потом InternetOpen и пытаюсь к hInternet приделать эту фукцию:
T>T>DWORD dwErr;
T>hInternet = InternetOpen("my agent" ,
T> INTERNET_OPEN_TYPE_PRECONFIG,
T> NULL,
T> NULL,
T> 0);
T>dwErr = GetLastError();
T>if (!dwErr)
T>{
T> dwISC = InternetSetStatusCallback(hInternet,
T> (INTERNET_STATUS_CALLBACK) InternetCallback);
T> dwErr = GetLastError(); // Вот тут выдается код ошибки 5...
T>}
T>
T>5 — это помоему Отказано в доступе...
T>Что я не так делаю?
Нужно так:
hInternet = InternetOpen("my agent",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
INTERNET_FLAG_ASYNC);
Re[2]: Проблема с InternetSetStatusCalllback из WinInet
От:
ting
Дата: 03.07.02 07:35
Оценка:
Здравствуйте Flea, Вы писали:
F>Нужно так:
F>hInternet = InternetOpen("my agent",
F> INTERNET_OPEN_TYPE_PRECONFIG,
F> NULL,
F> NULL,
F> INTERNET_FLAG_ASYNC);
Ну в доках по WinInet API написано, что и для синхронного должно работать. Я пробовал так. Тоже самое.
Re[3]: Проблема с InternetSetStatusCalllback из WinInet
От:
Flea
Дата: 04.07.02 12:43
Оценка:
Здравствуйте ting, Вы писали:
T>Здравствуйте Flea, Вы писали:
F>>Нужно так:
F>>hInternet = InternetOpen("my agent",
F>> INTERNET_OPEN_TYPE_PRECONFIG,
F>> NULL,
F>> NULL,
F>> INTERNET_FLAG_ASYNC);
T>Ну в доках по WinInet API написано, что и для синхронного должно работать. Я пробовал так. Тоже самое.
Скорее всего, какие-то локальные проблемы у тебя..
Вот реально работающий код:
m_Session = InternetOpen(lpszAgent,
INTERNET_OPEN_TYPE_PRECONFIG,
NULL, NULL, INTERNET_FLAG_ASYNC);
if(!m_Session)
{
EventLog(EVENTLOG_ERROR_TYPE,
MSG_ERROR_START_INET,
"Could not start Internet session");
m_Session = NULL;
}
iscCallback = InternetSetStatusCallback(m_Session,
(INTERNET_STATUS_CALLBACK)Callback);
...
void __stdcall Callback(HINTERNET hInternet,
DWORD_PTR dwContext,
DWORD dwInternetStatus,
LPVOID lpvStatusInformation,
DWORD dwStatusInformationLengthD)
{
...
}
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить