Страница 31 из 42

Re: Технология создания плагинов и программ-дополнений

Добавлено: 14:56, 30.01.2010
HukpoFuJl
О, отлично, доходчиво объяснил, спасиб огромное :)
Кстать,
Потом сам текст (длина + текст)
12 - длина текста - 18 байт
Далее 18 байт этого текста 28 30 5F EE 29 20 E3 E0 EC E0 F1 FF F7 E5 F1 F2 E2 EE (это (0_о) гамасячество)
Это не сам текст. а название канала :)

Сам текст (Длина + текст)
03 - длина текста - 3 байта
Далее 3 байта этого текста 31 32 33 (это 123)

Ещё раз спасибо, не ожидал так быстро добиться добиться подробного объяснения :)

ЗЫ: как я понял промежутки в виде 00 00 00 - это пропуски =)

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 16:20, 30.01.2010
              ~Alien~
              ZigZagkms наверное нельзя найти через функцию FindWindowEx окно именно того канала, который вам нужен. Так как оно не имеет названия. Видимо -=SJ=- просто проверяет с помощью спец. функции CommFortGetData активный на данный момент канал.
              ЗЫ: как я понял промежутки в виде 00 00 00 - это пропуски =)
              Нет. Просто длина текста должна быть представлена 4 байтами. Например, 05 00 00 00 (длина текста). Вот из-за этого и появляются эти нолики.

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 03:45, 31.01.2010
              HukpoFuJl
              ~Alien~ писал(а):Нет. Просто длина текста должна быть представлена 4 байтами. Например, 05 00 00 00 (длина текста). Вот из-за этого и появляются эти нолики.
              Кхм, тоесть сумма dec значений hex последовательности 4 байт? т.е.
              05 00 00 00 = 5 + 0 + 0 + 0 = 5

              Я правильно понял?

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 11:44, 31.01.2010
              ZigZagkms
              HukpoFuJl писал(а):Кхм, тоесть сумма dec значений hex последовательности 4 байт? т.е.
              05 00 00 00 = 5 + 0 + 0 + 0 = 5

              Я правильно понял?
              Не совсем так, для того чтобы перевести число 05 00 00 00 (представим в виде 0 5 0 0 0 0 0 0 и умножая каждое число на 10 в степени позиции числа с правой стороны) в десятичное:

              (0 *10^8) + (5 *10^7) + (0 * 10^6) + (0 * 10^5) + (0 * 10^4) + (0 * 10^3) + (0 * 10^2) + (0 * 10^1) = 5

              Используя ваш неверный способ максимальное число (FF FF FF FF) которое возможно передать (FF + FF + FF + FF = 1020)
              На самом же деле максимальное 32 разрядное число - 4 294 967 295 (умещается в 4 байта)

              upd: что то я тут напутал) вообщем неверно сказал =)

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 07:50, 02.02.2010
              -=SJ=-
              В дополнение к своему предыдущему посту (о том как встроить окно плагина в чат) выкладываю исходник с комментариями на Delphi.
              В этом примере создается простая форма, которая привязывается к определенному каналу (канал sticky) и просто кнопка, которая размещается на главной форме чата.
              Sticky.zip
              (232.38 КБ) 385 скачиваний

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 21:20, 04.02.2010
              HukpoFuJl
              Так, с получением сообщений от коммфорта разгрёбся... Назрел новый вопрос: Как их отсылать коммфорту?

              Попробовал по обратному принципу, от принципа получения сообщения:
              Например: ID: 100 (публикация в Events) Блок данных: число(стиль)+число(время)+число(тип протоколирования)+текст(текст публикации)

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

                            кол-во символов в тексте v
                     0х(64 00 00 00) (00) (00) (01) (03) (2B 2B 2B)
              ID события^        стиль^время^   ^протоколир. ^текст
              
              Вроде всё правильно, отправляю строку 0х64000000000001032B2B2B и ничего не происходит :(
              Где я ошибся?


              UPD: Заметил, что отсылаемый ботом код бот сам и принимает :( Может я не туда его просто шлю??

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 22:45, 06.02.2010
              -=SJ=-
              HukpoFuJl писал(а):Так, с получением сообщений от коммфорта разгрёбся... Назрел новый вопрос: Как их отсылать коммфорту?

              Попробовал по обратному принципу, от принципа получения сообщения:
              Например: ID: 100 (публикация в Events) Блок данных: число(стиль)+число(время)+число(тип протоколирования)+текст(текст публикации)

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

                            кол-во символов в тексте v
                     0х(64 00 00 00) (00) (00) (01) (03) (2B 2B 2B)
              ID события^        стиль^время^   ^протоколир. ^текст
              
              Вроде всё правильно, отправляю строку 0х64000000000001032B2B2B и ничего не происходит :(
              Где я ошибся?


              UPD: Заметил, что отсылаемый ботом код бот сам и принимает :( Может я не туда его просто шлю??
              Нет не правильно любое числовое значение в отправляемом сообщении должно быть 4х байтным

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

                            кол-во символов в тексте v
                     0х(64 00 00 00) (00 00 00 00) (00 00 00 00) (01 00 00 00) (03 00 00 00) (2B 2B 2B)
              ID события^        стиль^        время^                ^протоколир. ^текст
              

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 12:47, 07.02.2010
              HukpoFuJl
              Да, я это заметил почти сразуже, ток в посте исправить не успел...
              Всё равно одна и таже хрень, отправляю коммфорту строку 0x64000000000000000000000001000000030000002B2B2B. А ему как горохом в стену... Бот принимает свойже пакет, а коммфорт нет... Попробовал открыть на коммфорте ещё один порт отдельно, по которому мой бот не принимает сообщения... Отправляю строку на этот порт - результат тотже =(( никакого эффекта...

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 16:56, 07.02.2010
              -=SJ=-
              HukpoFuJl писал(а):Да, я это заметил почти сразуже, ток в посте исправить не успел...
              Всё равно одна и таже хрень, отправляю коммфорту строку 0x64000000000000000000000001000000030000002B2B2B. А ему как горохом в стену... Бот принимает свойже пакет, а коммфорт нет... Попробовал открыть на коммфорте ещё один порт отдельно, по которому мой бот не принимает сообщения... Отправляю строку на этот порт - результат тотже =(( никакого эффекта...
              Во первых порт бота на который бот принимает пакеты и с которого отправляет должен быть одним и тем же.
              Во вторых слать сообщение надо на тот порт коммфорта с которого было принято сообщение от него. т.е. этот порт не задан фиксированно и от подключения к подключению может меняться, поэтому его надо определять программно.

              Re: Технология создания плагинов и программ-дополнений

              Добавлено: 04:16, 08.02.2010
              HukpoFuJl
              Блин, суть я понял, спасибо :) То-то я тоже думал, как могут приложения вдвоём на одном порту работать нормально :)))
              Но всё равно меня тупит по ужасу...
              Пишу на AutoIT, эт скриптовый язык, по сути до ужоса упрощённый С...

              В общем функции обработки UDP там такие:
              ======================================
              UDPBind
              Создать UDP сокет, связанный со входящим подключением.
              Синтаксис: UDPBind ( $IPAddr, $port )

              Параметры:
              $IPAddr - Адрес протокола интернет (Internet Protocol -IpV4) в виде "192.162.1.1".
              $port - номер порта, соответствующего открываемому сокету.

              Возвращаемое значение:
              Идентификатор главного сокета. В случае ошибки возвращается -1, а значение @error устанавливается равным номеру ошибки согласно Windows API функции WSAGetLasterror.

              ======================================
              UDPOpen
              Открыть сокет, соответствующий подключению к имеющемуся серверу.
              Синтаксис: UDPOpen ( $IPAddr, $port )

              Параметры такиеже как и в UDPBind

              Возвращаемое значение:
              Массив array, в котором $array[1] равен реальному сокету, $array[2] - указанный IP адрес, а $array[3] - порт. Эта информация требуется в последующих вызовах UDPSend(). В случае ошибки массив array, в котором $array[1] равен -1, а значение @error устанавливается равным номеру ошибки согласно Windows API функции WSAGetLasterror.

              Замечания:
              Используется обмена данными приложения-клиента с сервером.

              ======================================
              UDPRecv
              Получить данные, используя открытый ранее сокет
              Синтаксис: UDPRecv ( $socket, $maxlen )

              Параметры:
              $socket - Главный идентификатор сокета (SocketID), возвращаемый функцией UDPBind.
              $maxlen - Максимальное число получаемых символов

              Возвращаемое значение:
              Строка данных, переданных через сокет. В случае ошибки возвращается пустая строка "", а значение @error устанавливается равным номеру ошибки согласно Windows API функции WSAGetLasterror.

              ======================================
              UDPSend
              Выслать данные, используя открытый ранее сокет
              Синтаксис: UDPSend ( $socket, $data )

              Параметры:
              $socket - Главный идентификатор сокета (SocketID), возвращаемый функцией UDPOpen.
              $data - Содержание строки передаваемого текста или бинарной строки в сокет подключения

              Возвращаемое значение:
              Количество переданных через сокет данных. В случае ошибки возвращается 0, а значение @error устанавливается равным номеру ошибки согласно Windows API функции WSAGetLasterror.
              ======================================
              Ну это в кратце нужные функции...

              В общем делаю(в кратце):

              $bindport = UDPBind (127.0.0.1, 16770) ;открываю порт для приёма данных.
              $openport = UDPOpen (127.0.0.1, 16770) ;получаю массив из: $openport[1] = порт по которому коммфорт отправляет данные, $openport[2] = !Р адрес, $openport[3] = порт по которому я отсылаю данные(16770)

              $datarecive = UDPRecv ($bindport, 100000) ;запрос на получение данных (у меня он в цикле)

              ; $datarecive = строка отправляемая коммфортом...
              ; далее бла-бла-бла, тело программы...
              ; и потом выполнение отсылки готового кода $datasend

              UDPSend ($openport[1], $datasend)

              ;в результате 0 эффекта, $datasend имеет правильный формат, всё по госту короче :) Но коммфорт молчит, хотьбы ошибку выдал чтоли...

              Спасите заблудшую душу :oops:

                          Re: Технология создания плагинов и программ-дополнений

                          Добавлено: 08:06, 08.02.2010
                          Maxim Mirgorodsky
                          При подключении к серверу CommFort client отправляет всем программам-дополнениям первый пакет по которому можно узнать адрес (порт), по которому необходимо слать сообщения CommFort'у. При этом отправлять сообщения необходимо строго с того адреса (и порта), который указан в UDPAddons.ini.

                          Re: Технология создания плагинов и программ-дополнений

                          Добавлено: 22:56, 13.02.2010
                          DeBugger
                          Я просмотрел всю тему, но что то не нашел ни одного примера не дельфе, который реализовывал бы простейшего UPD бота. Ткните носом пожалуйста, если я пропустил

                          Добавлено:
                          Какбэ мне бы только саму работу с UDP а то не компилится не один пример. Среда Delphi 2009

                          Re: Технология создания плагинов и программ-дополнений

                          Добавлено: 23:42, 13.02.2010
                          ~Alien~
                          Вот http://www.commfort.com/ru/forum/viewto ... 6&start=45. Предпоследний пост от dv.

                          Re: Технология создания плагинов и программ-дополнений

                          Добавлено: 23:52, 13.02.2010
                          DeBugger
                          ~Alien~ писал(а):Вот http://www.commfort.com/ru/forum/viewto ... 6&start=45. Предпоследний пост от dv.
                          Собственно, UDP.pas оттуда и не компилится =)

                          http://s002.radikal.ru/i198/1002/d7/79eecbb001a9.png

                          Re: Технология создания плагинов и программ-дополнений

                          Добавлено: 06:19, 14.02.2010
                          dv
                          [Сообщение yдалено]