Работа с wsock32.dll

Программирование на Visual Basic for Applications
BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Работа с wsock32.dll

Сообщение BasiС » 07.06.2006 (Ср) 0:49

Доброго времени суток, уважаемые!

Сейчас рассматриваю пример по использованию wsock32.dll:
http://bbs.vbstreets.ru/viewtopic.php?t=445&sid=8e1c3749d5c5de95807e31208e5fd7cd
В "чистом" VB пример работает без нареканий, вопросов нет.
Пытаюсь адаптировать пример под VBA (Excel) и появляются они - (проблемы=)
Объясните пожалуйста, зачем делается привязка к Me.hwnd и что это даёт?
С хуками, я так понимаю тоже ничего не получится - придётся что-нибудь придумывать...
В остальном всё более-менее понятно (спасибо Большому Человеку=)

Передо мной, в качестве тех.задания стоит подключение к серверу, передача данных и отключение. Отслеживание ответов сервера не требуется.

Спасибо!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 07.06.2006 (Ср) 15:40

а чем не подходит Internet Transfer Control


вот пример подключаеться к серверу, передает комманду и получает ответ, у меня из экселя заработал, можеш попробовать сам.

Код: Выделить всё
Option Explicit

Private Sub CommandButton1_Click()
          Inet1.UserName = "anonymous"
          Inet1.Password = "anonymous@"
          Inet1.URL = "ftp://195.248.180.86:2121"
          Inet1.Execute , "DIR"
End Sub

Private Sub Inet1_StateChanged(ByVal State As Integer)
       Dim vtData As Variant ' Data variable.

       Select Case State
       ' ... Other cases not shown.
       Case icError ' 11
           ' In case of error, return ResponseCode and

      ' ResponseInfo.
           vtData = Inet1.ResponseCode & ":" & _
           Inet1.ResponseInfo

       Case icResponseCompleted  ' 12
           Dim strData As String: strData = ""
           Dim bDone As Boolean: bDone = False

           ' Get first chunk.
           vtData = Inet1.GetChunk(1024, icString)
           DoEvents

           Do While Not bDone

               strData = strData & vtData
               ' Get next chunk.
               vtData = Inet1.GetChunk(1024, icString)
               DoEvents

               If Len(vtData) = 0 Then
                   bDone = True
               End If
           Loop

          MsgBox strData
       End Select
      End Sub
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 07.06.2006 (Ср) 16:56

Спасибо за пример, плохо что контрол такой не инсталлирован и возможности такой и не будет =(по другим тоже)
Именно по этой причине я и остановился на wsock32
Был бы рад ответам по сабжу.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 07.06.2006 (Ср) 18:15

там пять минут адаптации :wink:
Вложения
Inet.rar
(28.08 Кб) Скачиваний: 70
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

BasiС
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 64
Зарегистрирован: 16.02.2006 (Чт) 23:34
Откуда: Koenigsberg

Сообщение BasiС » 12.06.2006 (Пн) 22:09

Спасибо, стало получаться =)
Может кто подскажет на пальцах, зачем нужна привязка к окну:
HookForm Application.hwnd

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 13.06.2006 (Вт) 9:27

Тебе нужна очередь сообщений, которая будет получать события от сокета. Поэтому нужно просабклассить окно, у которого есть эта очередь и отобрать сокетные сообщения, а оконные пропустить на обработку дальше.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 53

    TopList