Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.08.2008, 15:16
Programm Programm вне форума
Прохожий
 
Регистрация: 11.08.2008
Сообщения: 4
Репутация: 10
Восклицание Ищу единомышленников для написания программы

Здравствуйте уважаемые программисты,пришёл я сюда чтобы найти поддержку в написаниии программы которая будет удалённо выключать компьютер по средствам ICQ клиента,собираюсь писать на Delphi 7,есть компонент TICQklient v1.33, но проблема в то что не хватает опыта работы на delphi,вобщеим я ничего навороченого создать не хочу,просто простенькую программу,с простым интерфейсом,которая будет работать как ICQ bot,правда обрабатывать будет одну команду посылая компьютер в Shutdown.Программка должна работать на своём собственном icq номере и должна обрабатывать команду только с одного или с нескольких номеров icq.Кто заинтересовался этой программой давайте писать вместе,если что стучите в асю по номеру 184023.
Ответить с цитированием
  #2  
Старый 11.08.2008, 21:50
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

Для этого не нужно писать клиент icq, хватит плагина для квипа/миранды.

А вообще в чем смысл этого бота? почему такая необходимость запускать его на удаленном компа?
Ответить с цитированием
  #3  
Старый 13.08.2008, 12:03
Programm Programm вне форума
Прохожий
 
Регистрация: 11.08.2008
Сообщения: 4
Репутация: 10
По умолчанию

Цитата:
Сообщение от Burka
Для этого не нужно писать клиент icq, хватит плагина для квипа/миранды.

А вообще в чем смысл этого бота? почему такая необходимость запускать его на удаленном компа?

Может плагина и хватит,я уже почти написал как бота.Просто необходимо выключить комп удалённо.
Ответить с цитированием
  #4  
Старый 13.08.2008, 12:06
Programm Programm вне форума
Прохожий
 
Регистрация: 11.08.2008
Сообщения: 4
Репутация: 10
По умолчанию

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Timer1: TTimer;
    ICQClient1: TICQClient;
    procedure Button1Click(Sender: TObject);
    procedure ICQClient1Login(Sender: TObject);
    procedure ICQClient1ConnectionFailed(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
    procedure ShutdownComputer(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  rec: boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 begin
 if (Edit1.Text = '') or (Edit2.Text = '') or //пустые поля
   (Length(Edit1.Text) < 5) or (Length(Edit2.Text) < 3) //Если UIN меньше 5 символов и пароль меньше 3
     then
       begin
         MessageDlg('Не правельно заполнены поля!',mtInformation,[mbOk],0); //Выводим сообщение об ошибке
       Exit;
      end;
     rec := True; //Удачное соединение
       ICQClient1.UIN := StrToInt(Edit1.Text); //забираем UIN
        ICQClient1.Password := Edit2.Text; //забираем пароль
       ICQClient1.Login(); //Соединяемся с сервером
      Memo1.Lines.Add('Соединение с сервером ICQ...'); //Выводим текущее состояние (соединение)
 end;

procedure TForm1.ICQClient1Login(Sender: TObject);

 begin
  if ICQClient1.LoggedIn then //если соединение установлено
  begin
   Memo1.Lines.Add('Соединение с сервером установлено.'); //Добавляю в Memo1 строку о текущем положении
   Timer1.Enabled := True; //Включаю таймер
  end;
 end;

procedure TForm1.ICQClient1ConnectionFailed(Sender: TObject);

 begin
  if not rec then Exit; //Если мы нажали на кнопку "Выход", то не нужно пытаться соединиться
    Memo1.Lines.Add('Не удалось соединиться с сервером.');
     if MessageDlg('Попытаться соединиться еще раз?',mtInformation,[mbOk,mbCancel],0) = mrOk
     then
   begin
   ICQClient1.Login();
   Memo1.Lines.Add('Соединение с сервером ICQ...');
  end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
 begin
 ICQClient1.SendKeepAlive; //посылаем KeepAlive
end;

procedure TForm1.Button2Click(Sender: TObject);

 begin
  if not ICQCLient1.LoggedIn then
   MessageDlg('Соединение с сервером не установлено!',mtInformation,[mbOk],0)
   else
    begin
     rec := False;
    ICQCLient1.Disconnect;
   Memo1.Lines.Add('Соединение с сервером оборвано.');
  Timer1.Enabled := False;
 end;
end;

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

var 
icq: cardinal; 
 begin 
  icq := StrToInt(UIN);
      if UIN='184023' then begin
        if Msg='off' then
           begin
            ICQClient1.SendMessage(icq,'Выполняется выключение компьютера');
             Memo1.Lines.Add('Пользователь '+UIN+ ' прислал верную команду: ' + Msg
             ShutdownComputer;
             end
            else
             begin
              ICQClient1.SendMessage(icq,'Команда не определена!');
              Memo1.Lines.Add('Пользователь '+UIN+ ' прислал неправильную команду: ' + Msg);
            end;
        end;
end;

procedure TForm1.ShutdownComputer;

var
  ph: THandle;
  tp, prevst: TTokenPrivileges;
  rl: DWORD;
 begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES orTOKEN_QUERY, ph);
   LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tp.Privileges[0].Luid);
    tp.PrivilegeCount := 1;
     tp.Privileges[0].Attributes := 2;
    AdjustTokenPrivileges(ph, FALSE, tp, SizeOf(prevst), prevst, rl);
  ExitWindowsEx(EWX_SHUTDOWN or EWX_POWEROFF, 0);
 end;

end.
Ответить с цитированием
  #5  
Старый 13.08.2008, 12:07
Programm Programm вне форума
Прохожий
 
Регистрация: 11.08.2008
Сообщения: 4
Репутация: 10
По умолчанию

Сможете поправить что не так?
Ответить с цитированием
  #6  
Старый 14.08.2008, 21:21
Burka Burka вне форума
Начинающий
 
Регистрация: 10.06.2007
Сообщения: 163
Репутация: 10
По умолчанию

Все работает, у меня комп выключился..
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:28.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025