среда, 29 октября 2014 г.

Описание API вызова библиотеки SendReadTwitter.DLL

Библиотека 'SendReadTwitter.DLL' (далее DLL) предназначена для отправки сообщений в Twitter-аккаунт/ы (1..N), а также чтения последних постов произвольных аккаунтов. DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32/64-bit.

На 1 аккаунт:


На N-аккаунтов в TWITTER одновременно:


Cистемные требования и зависимости:
  1. Win OS (NT/2003/XP/7).
  2. ssleay32.dll + libeay32.dll в каталоге с библиотекой или в системном каталоге Win OS.

Для использования DLL в своих проектах соблюдайте соглашение об stdcall-вызовах. Тип соглашения о вызове объявляется после прототипа функции, будь то объявление функционального типа или же объявление функции.

Таблица расшифровок параметров экспортируемой функций 'reinit()' библиотеки:


Таблица расшифровок параметров экспортируемой функции 'status()' библиотеки:



Таблица расшифровок параметров экспортируемой функций 'sendread()' библиотеки:



 Пример динамического подключения (Delphi 6/7/2006/2009/2010/TDL/XE5):
var
  en: boolean = false;

  reinit: function(login, pass: pansichar; p: uint): uint; stdcall;
  status: function: uint; stdcall;
  sendread: function(txt: pansichar; writeread: uint): pansichar; stdcall;
  LibHandle: THandle;
  // таймер
  tmr1: cardinal;
  function timeSetEvent(uDelay, uResolution: UINT;lpFunction: TFNTimeCallBack; dwUser: DWORD; uFlags: UINT): UINT;stdcall; external 'winmm.dll' name 'timeSetEvent';
  function timeKillEvent(uTimerID: UINT): UINT; stdcall; external 'winmm.dll' name 'timeKillEvent';



function LinkProc(h: thandle; ProcName: string):Pointer;
begin
 result:= GetProcAddress(h, PChar(ProcName))
end;

// поток обработчика MM-таймера
procedure Ontmr1(uTimerID, uMessage: uint;dwUser, dw1, dw2: dword) stdcall;
begin
 if status = 1 then begin
  { индикация успешности подключения }
 end;
end;

{ инициализация/деинициализация }
 en:= not en;
 reinit(pansichar(login), pansichar(pass), longint(en));
...

{ отправка сообщения в свой аккаунт }
 sendread(memo1.Lines.GetText, 1);
...

{ чтение последнего поста из произвольного аккаунта }
 memo2.Lines.SetText(sendread('procoder_info', 0));
...

{ подключение библиотеки }
 LibHandle:= LoadLibrary('SendReadTwitter.DLL');
 if LibHandle <> 0 then begin
  reinit:= LinkProc(LibHandle, 'reinit');
  status:= LinkProc(LibHandle, 'status');
  sendread:= LinkProc(LibHandle, 'sendread'); 
 end;

 // создаем поток, чтобы не зависеть от тайминга
 tmr1:= timesetevent(250, 0, @Ontmr1, 0, 1);
...

{ отключение библиотеки }
 // уничтожаем поток
 timeKillEvent(tmr1);

 if LibHandle <> 0 then
  FreeLibrary(LibHandle)
...
Пример вызова (под VBS):
' Зависимости:
' · Win OS 32/64-bit
' · COM-сервер DynWrapx.dll
'
' Региcтрация интерфейсов (обязательно первично однократно):
' · запустите regdynwrapx.bat (на Windows Vista/7/8/8.1 запускать правой кнопкой мыши от имени Администратора)
' · установите логин и пароль для доступа к TWITTER (параметры login, pass)
' Использование: запустите runSendReadTwitter.cmd

Dim login
Dim pass
' Параметры доступа к TWITTER!!!
login = ""
pass = ""
' подключаем голосовое сопровождение
Dim Speak
Set Speak = CreateObject("sapi.spvoice")
' регистрируем COM объект DynamicWrapperX в тихом режиме
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("regsvr32.exe dynwrapx.dll /s"),3, true
' создаем объект DynamicWrapperX
Set Wrap = CreateObject("DynamicWrapperX.2")
Wrap.Register "SendReadTwitter.DLL", "reinit", "i=ssu", "r=u"
Wrap.Register "SendReadTwitter.DLL", "status", "r=u"
Wrap.Register "SendReadTwitter.DLL", "sendread", "i=su", "r=s"

Speak.Speak "Попытаюсь войти в Twitter."
Dim res
res = Wrap.reinit(login, pass, 1)

res = 0
Do
WScript.Sleep 250 'кол-во миллисекунд
res = Wrap.status
Loop Until res = 1
Speak.Speak "Я в Twitter."

WScript.Sleep 1500 'кол-во миллисекунд
Speak.Speak "Читаю последний пост."
res = Wrap.sendread("procoder_info", 0)
Speak.Speak "Последний пост: "&res&"."

ПОРЯДОК ИСПОЛЬЗОВАНИЯ
  1. Активация аккаунта производится в собственном потоке внутри библиотеки, поэтому функция 'reinit' вернет результат сразу же.
  2. Вы можете читать и писать сообщения в любой момент, как только функция 'status' вернет 1, что является признаком активации аккаунта по заданию функции 'reinit'. До этого момента чтение/запись будут проигнорированы.
  3. После активации аккаунта Вы можете читать последний пост любого TWITTER-аккаунта, посты которого не закрыты или открыты для вашего аккаунта.
  4. Активация N-аккаунтов доступна в коммерческой версии.

2 комментария:

  1. Произведено обновление библиотеки 'SendReadTwitter.DLL' чтения и отправки данных в Twitter-аккаунт/ы.

    ОтветитьУдалить
  2. Поддержка библиотеки прекращена.

    ОтветитьУдалить

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.