ICQ Plugin..нужна помощь..небольшой пинок:)

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

Moderators: Korney San, marcipan

Post Reply
kvailys
Posts: 2
Joined: 25 Mar 2007, 10:03 Sun

ICQ Plugin..нужна помощь..небольшой пинок:)

Post by kvailys »

Приветы.
Такая тема уже создана, но надеюсь, что в новой быстрее получу помощь..
Вообщем, не могу заставить компонент TICQClient подсоединится к серверу мирабилиса.
Фаерволл показывает, что запрос на авторизацию проходит (login.icq.com), а вот далее все замолкает..
Используя этот же компонент в обычном приложении, все коннектится на ура.
Вот код:

Code: Select all

unit dmtest_pluginImpl;

interface

uses DMPluginIntf, Classes, Dialogs, ICQClient;
const
  myPluginID = '{90A3E969-18B0-4B4F-9DE0-54F3DB0D9EBA}';
  myPluginName = 'Test Plug-in';
  myPluginVersion = '0.1.1.1';
  myPluginEmail = 'slava@westbyte.com';
  myPluginHomePage = 'http://www.westbyte.com/dm/';
  myPluginCopyRight = chr(169)+'2006 WestByte';
  myMinNeedAppVersion = '5.0.2';
  myPluginDescription = 'Test Plug-in for show how create plugins for DM';
  myPluginDescriptionRussian = 'Тестовый плагин для демонстрации как создавать плагины для DM. Является одновременно шаблоном для создания плагинов. Язык реализации Delphi 7.';
  
type
TSc = class(TThread)
  private
   
  protected
   icq:TICQClient;
   procedure Execute; override;
   procedure Reading(Sender: TObject; Msg, UIN: String);
end;

TDMTestPlugIn = class(TInterfacedObject, IDMPlugIn)
  private
    myIDmInterface: IDmInterface;
  protected

  public

    function getID: WideString; stdcall;
    //-----info
    function GetName: WideString; stdcall;
    function GetVersion: WideString; stdcall;
    function GetDescription(language: WideString): WideString; stdcall;
    function GetEmail: WideString; stdcall;
    function GetHomepage: WideString; stdcall;
    function GetCopyright: WideString; stdcall;
    function GetMinAppVersion: WideString; stdcall;

    //------
    procedure PluginInit(_IDmInterface: IDmInterface); stdcall;
    procedure PluginConfigure(params: WideString); stdcall;
    procedure BeforeUnload; stdcall;

    function EventRaised(eventType: WideString; eventData: WideString): WideString; stdcall;

    { идентификатор плагина }
    property ID: WideString read getID;

  published

end;

var Sc: TSc;

implementation

procedure TSc.Execute;
begin
 icq:=TICQClient.Create(nil);
 icq.ICQServer:='login.icq.com';
 icq.ICQPort:=5190;
 icq.UIN:=****;
 icq.Password:='***';
 icq.Login;
 icq.OnMessageRecv:=Reading;
end;

procedure TSc.Reading(Sender: TObject; Msg, UIN: String);
begin
 ShowMessage(Msg);
end;

....

procedure TDMTestPlugIn.PluginInit(_IDmInterface: IDmInterface);
begin
  Sc:=TSc.Create(True);
  Sc.Execute();
  myIDmInterface := _IDmInterface;
end;

procedure TDMTestPlugIn.BeforeUnload;
begin
  Sc.icq.Free;
  Sc.Terminate;
  myIDmInterface := nil;
end;
//------------------------------------------------------------------------------
procedure TDMTestPlugIn.PluginConfigure(params: WideString);
begin
 // ShowMessage('Showing config form');

  //myIDmInterface.DoAction('AddingURL', '<url>http://www.westbyte.com/plugin</url> <sectionslimit>2</sectionslimit>');
//  ShowMessage(myIDmInterface.DoAction('GetDownloadIDsList', '3'));
end;

...
...
end.
Компонент: ICQClient v. 1.21 (_www.cobans.net)
Dmaster: 5.2.3.1061

С уважением. :)
lorrd
Бывалый
Posts: 16
Joined: 20 Mar 2006, 12:20 Mon

Post by lorrd »

Во-первых, избавься от потока, для управления плагином тебе хватит события dm_timer_.
Во-вторых, добавь в процедуру PluginInit строку
Application.CreateHandle;
это должно решить твою проблему с коннектом.
Удачи.
kvailys
Posts: 2
Joined: 25 Mar 2007, 10:03 Sun

Post by kvailys »

lorrd wrote:Во-первых, избавься от потока, для управления плагином тебе хватит события dm_timer_.
Во-вторых, добавь в процедуру PluginInit строку
Application.CreateHandle;
это должно решить твою проблему с коннектом.
Удачи.
Спасиб большое!
Попробуем...:)
Спасиб!
Post Reply