01.12.2004, 10:41 | #1 |
Участник
|
работа с wininet.dll
Здравствуйте, господа!
Есть следующий код: void PutFile(str 50 proxy, str 50 url, str 50 login, str 50 pass, str 50 local, str 50 remote) { DLL InetDll = new DLL('wininet'); DLLFunction InternetOpen = new DLLFunction(InetDll, 'InternetOpenA'); DLLFunction InternetConnect = new DLLFunction(InetDll, 'InternetConnectA'); DLLFunction FTPPutFile = new DLLFunction(InetDll, 'FtpPutFileA'); DLLFunction InternetCloseHandle = new DLLFunction(InetDll, 'InternetCloseHandle'); int res; InternetOpen.returns(ExtTypes:Word); InternetOpen.arg(ExtTypes::String); InternetOpen.arg(ExtTypes:Word); InternetOpen.arg(ExtTypes::String); InternetOpen.arg(ExtTypes::String); InternetOpen.arg(ExtTypes:Word); hInternet = InternetOpen.call('Ax30', 3, proxy, '', 0); InternetConnect.returns(ExtTypes:Word); InternetConnect.arg(ExtTypes:Word); InternetConnect.arg(ExtTypes::String); InternetConnect.arg(ExtTypes::Word); InternetConnect.arg(ExtTypes::String); InternetConnect.arg(ExtTypes::String); InternetConnect.arg(ExtTypes:Word); InternetConnect.arg(ExtTypes:Word); InternetConnect.arg(ExtTypes:Word); hConnect = InternetConnect.call(hInternet, url, 21, login, pass, 1, 0, 0); FTPPutFile.returns(ExtTypes:Word); FTPPutFile.arg(ExtTypes:Word); FTPPutFile.arg(ExtTypes::String); FTPPutFile.arg(ExtTypes::String); FTPPutFile.arg(ExtTypes:Word); FTPPutFile.arg(ExtTypes:Word); res = FTPPutFile.call(hConnect, local, remote, 2, 0); InternetCloseHandle.returns(ExtTypes::Word); InternetCloseHandle.arg(ExtTypes:Word); InternetCloseHandle.call(hConnect); InternetCloseHandle.call(hInternet); } Переменные hItnernet и hConnect объявлены в cassDeclaration В таком виде данная ф-ция прекрасно работает, но хотелось бы чтобы каждая ф-ция из DLL была в отдельной ф-ции класса. В этом случае работать сразу перестает (ф-ция InternetConnect возвращает ошибку). В Delphi и VB такой механизм работает. Где глюк???? |
|
01.12.2004, 12:11 | #2 |
Участник
|
А как ошибка выглядит?
|
|
01.12.2004, 12:31 | #3 |
Участник
|
GetLastError возвращает 12172, а сама ф-ция возвращает 0
в MSDN описаны коды с 12001 - 12156 ??? |
|
01.12.2004, 12:53 | #4 |
Участник
|
Цитата:
Изначально опубликовано Lucky13
в MSDN описаны коды с 12001 - 12156 ??? http://msdn.microsoft.com/library/de...r_messages.asp |
|
01.12.2004, 13:14 | #5 |
Участник
|
Спасибо за ссылку, но это проблемы не решает
Ясно что хэндл неправильно инициализирован, вопрос почему? Причем когда все в одной ф-ции - работает, а в разных не работает |
|
01.12.2004, 13:24 | #6 |
Участник
|
xpo с классом выложите
|
|
01.12.2004, 13:58 | #7 |
Участник
|
Выложил
|
|
01.12.2004, 14:55 | #8 |
Участник
|
Попробуйте перегрузить метод new() Вашего класса, где проинициализируйте все объекты Internet. Что-то вроде
PHP код:
|
|
01.12.2004, 15:03 | #9 |
Участник
|
Спасибо за совет, все получилось.
|
|