суббота, 30 ноября 2013 г.

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

По мотивам использования Google-сервисов. Как выяснилось, Google Calendar поддерживает отправку не только на российских операторов, но и на украинского оператора UMC (ныне MTS ...на других опсосах не тестировалось). Ввиду заинтересованности народа решил предоставить доступ к своей библиотеке SMS_google_calendar.DLL. Данная библиотека (далее DLL), для работы с сервисом Google Calendar через XMLHTTPRequest в ОС NT/2000/2003/XP/7/8, предназначена для оповещения о событиях и проишествиях в своих программах через SMS/E-mail без использования капчи или платных сервисов-шлюзов по типу Antigate.com. DLL предоставляет универсальный доступ для других приложений вне зависимости от языка в среде Win32/64.

Cистемные требования и зависимости

 1. Win NT/2003/XP/7 + msxml.dll (по-умолчанию присутствует)
 2. Требуется аккаунт и номер сотового в настройках Google Calendar
 3. Синхронизация машины с сервером времени

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

Таблица расшифровок входных параметров экспортируемой функции SMSGC() библиотеки 'SMS_google_calendar2.DLL' (в текущей версии TDateTime заменен на Double):



При использовании режима отправки "с текущим временем на ПК", требуется синхронизация с любым сервером времени. Для наглядной проверки можно использовать сервис http://time.is.

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

  SMSGC:function(sLogin,  
                 sPW,   
                 sTitle,  
                 sContent,
                 sWhere, 
                 deltatime,
                 minutes,
                 method:
                 pansichar;
                 mode,
                 translit:  
                 integer;
                 mode_date,
                 mode_time:
                 double): pansichar; stdcall; LibHandle: THandle;


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

{ инициализация }
begin
 LibHandle:= LoadLibrary('SmsGoogleCalendar2.dll');
 if LibHandle<>0 then
  SMSGC:= LinkProc('SMSGC');
...

{ деинициализация }
begin
 if LibHandle<>0 then
  FreeLibrary(LibHandle)
...


{ пример вызова }
begin
 if LibHandle<>0 then
  result:= SMSGC('*********@gmail.com',
                 '*************',              
                 'Посылка',
                 'Новаяпочта',
                 'вам назначено',
                 '22:01',
                 '1',
                 'sms',
                 0,
                 1,
                 0,
                 0        
                );
После компиляции демки и отправки:


Cоздается тикет в календаре:



и в назначенное время (по-умолчанию текущее + 1 минута) приходит SMS на сотовый. Профит!

Пример вызова библиотеки из под VBS:
' регистрируем COM объект DynamicWrapperX в тихом режиме
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run ("regsvr32.exe dynwrapx.dll /s"),3, true
' инициируем отправку
Set Wrap = CreateObject("DynamicWrapperX")
Wrap.Register "SmsGoogleCalendar2.dll", "SMSGC", "i=sssssssslldd", "f=s", "r=s"
MSGBOX Wrap.SMSGC("*******@gmail.com", "****************", "Посылка", "Новая почта", "Вам назначено", "22:01", "1", "sms", 0, 1, 0, 0)

ПОРЯДОК ИСПОЛЬЗОВАНИЯ
  1. Все параметры вызова функции SMSGC() можно оставлять пустыми, кроме 'sLogin' и 'sPW', что логично
  2. Ecли 'mode' в false, используется режим задания события в календаре с текущей датой-временем с учетом смещения deltatime и minutes.
  3. Если 'mode' в true, используется режим произвольного задания даты-времени события в календаре с учетом смещения deltatime и minutes.
  4. Значение 'RESULT' функции SMSGC() содержит отчет об отправке (создании события в календаре).
  5. Если 'translit' в 1, используется режим транслитерации кириллицы всего текстового сообщения.
  6. Демку с примером использования и саму библиотеку прилагаю ниже.
* Комментарий.
Следует отметить, что есть ограничение на подтверждение номера для отсылки с Google Calendar, т.е. при добавлении в настройках номера сотового на него отправляется код подтверждения и после этого уже становится доверенным, так что спама не выйдет.

** Комментарий.
Среди прочего, при использовании COM-сервера (ActiveX) <dynwrap.dll> вы можете вызвать любую экспортируемую функцию любой DLL. А значит вызывать даже в обычном VBS скрипте. Впрочем, работу с XMLHTTPRequest можно организовать сразу средствами VBS.

забрать

1 комментарий:

  1. В связи с тем, что компания Google c 27.06.15 отключает возможность рассылки SMS-оповещений из Google Календаря, библиотеки серии SmsGoogleCalendar.DLL нами более не поддерживаются.

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

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