![]() |
#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: ![]() InternetOpen.arg(ExtTypes::String); InternetOpen.arg(ExtTypes: ![]() InternetOpen.arg(ExtTypes::String); InternetOpen.arg(ExtTypes::String); InternetOpen.arg(ExtTypes: ![]() hInternet = InternetOpen.call('Ax30', 3, proxy, '', 0); InternetConnect.returns(ExtTypes: ![]() InternetConnect.arg(ExtTypes: ![]() InternetConnect.arg(ExtTypes::String); InternetConnect.arg(ExtTypes::Word); InternetConnect.arg(ExtTypes::String); InternetConnect.arg(ExtTypes::String); InternetConnect.arg(ExtTypes: ![]() InternetConnect.arg(ExtTypes: ![]() InternetConnect.arg(ExtTypes: ![]() hConnect = InternetConnect.call(hInternet, url, 21, login, pass, 1, 0, 0); FTPPutFile.returns(ExtTypes: ![]() FTPPutFile.arg(ExtTypes: ![]() FTPPutFile.arg(ExtTypes::String); FTPPutFile.arg(ExtTypes::String); FTPPutFile.arg(ExtTypes: ![]() FTPPutFile.arg(ExtTypes: ![]() res = FTPPutFile.call(hConnect, local, remote, 2, 0); InternetCloseHandle.returns(ExtTypes::Word); InternetCloseHandle.arg(ExtTypes: ![]() InternetCloseHandle.call(hConnect); InternetCloseHandle.call(hInternet); } Переменные hItnernet и hConnect объявлены в cassDeclaration В таком виде данная ф-ция прекрасно работает, но хотелось бы чтобы каждая ф-ция из DLL была в отдельной ф-ции класса. В этом случае работать сразу перестает (ф-ция InternetConnect возвращает ошибку). В Delphi и VB такой механизм работает. Где глюк???? |
|
![]() |
#2 |
Участник
|
А как ошибка выглядит?
|
|
![]() |
#3 |
Участник
|
GetLastError возвращает 12172, а сама ф-ция возвращает 0
в MSDN описаны коды с 12001 - 12156 ??? |
|
![]() |
#4 |
Участник
|
Цитата:
Изначально опубликовано Lucky13
в MSDN описаны коды с 12001 - 12156 ??? http://msdn.microsoft.com/library/de...r_messages.asp |
|
![]() |
#5 |
Участник
|
Спасибо за ссылку, но это проблемы не решает
Ясно что хэндл неправильно инициализирован, вопрос почему? Причем когда все в одной ф-ции - работает, а в разных не работает |
|
![]() |
#6 |
Участник
|
xpo с классом выложите
|
|
![]() |
#7 |
Участник
|
Выложил
|
|
![]() |
#8 |
Участник
|
Попробуйте перегрузить метод new() Вашего класса, где проинициализируйте все объекты Internet. Что-то вроде
PHP код:
|
|
![]() |
#9 |
Участник
|
Спасибо за совет, все получилось.
|
|