NetMessageBufferSend [хочу понять как работает]

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Bsplesk
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.10.2005 (Ср) 14:07

NetMessageBufferSend [хочу понять как работает]

Сообщение Bsplesk » 03.11.2006 (Пт) 0:18

Код: Выделить всё
Private Declare Function NetMessageBufferSend Lib _
  "NETAPI32.DLL" (yServer As Any, yToName As Byte, _
  yFromName As Any, yMsg As Byte, ByVal lSize As Long) As Long
Private Const NERR_Success As Long = 0&
Public Function SendMessage(RcptToUser As String, _
   FromUser As String, BodyMessage As String) As Boolean

   Dim RcptTo() As Byte
   Dim From() As Byte
   Dim Body() As Byte

   RcptTo = RcptToUser & vbNullChar
   From = FromUser & vbNullChar
   Body = BodyMessage & vbNullChar

   If NetMessageBufferSend(ByVal 0&, RcptTo(0), ByVal 0&, _
        Body(0), UBound(Body)) = NERR_Success Then
     SendMessage = True
   End If
End Function
Private Sub Form_Load()
    Dim RetVal As Boolean
    RetVal = SendMessage("Utente", "FromUser", "BodyText")
End Sub

Вот есть такой примерчик. Не пойму как он работает :(
Хотелось бы узнать
о типе Any
и как в допустим RcptTo() [массив Byte как я понимаю] присваивается
RcptToUser [типа string].... и как точно
кому не в лом распишите по пунктикам код.
[/syntax]
Всё что я делаю это одна большая ошибка![в последние время она научилась размножаться и распространяться :]

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.11.2006 (Пт) 5:50

Any -- это не тип, это указание "любой тип".
Строка в байтовый массив копируется побайтно (один символ -- пара байтов).
Сам код дурной (надо было передавать ByVal StrPtr, безо всякого копирования).
Изображение

Bsplesk
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 26.10.2005 (Ср) 14:07

Сообщение Bsplesk » 07.11.2006 (Вт) 23:03

Пасибо! :? , но почему "копируется побайтно (один символ -- пара байтов)", почему? типо посмотрел как изменяются переменные в Add Watch, но почему именно так, так и не понял :shock: Размерность массива устанавливается по кол-во символов [код ASCII символа+0].
Кто-нибуть может кинуть однозначный кусок кода, но по понятней :?:
зарание благодарен :wink:
Всё что я делаю это одна большая ошибка![в последние время она научилась размножаться и распространяться :]

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 07.11.2006 (Вт) 23:45

Bsplesk, 2 байта - код символа в юникоде :)


Вернуться в Visual Basic 1–6

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

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

    TopList