Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2011, 07:43   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 267
По умолчанию Мышь drag-drop в аналоге RAdmin

Добрый день!
потихоньку идет разработка аналога РАдмин, в рамках одного проекта в среде D2010
на текущий день есть код переноса отжатия кнопок мыши с клиента на сервер в компоненте ИМЕДЖ1, в котором отображается скрин экрана сервера, все работает

КЛИЕНТ
Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbLeft then
  begin
   IdTCPClient1.Host:=HOST.Text;
   IdTCPClient1.Port:=StrToInt(PortNumber.Text);
   IdTCPClient1.Connect;
   IdTCPClient1.IOHandler.WriteLn('mouse_left ');
   IdTCPClient1.Disconnect;
  end;
 if Button=mbRight then
 begin
   IdTCPClient1.Host:=HOST.Text;
   IdTCPClient1.Port:=StrToInt(PortNumber.Text);
   IdTCPClient1.Connect;
   IdTCPClient1.IOHandler.WriteLn('mouse_right ');
   IdTCPClient1.Disconnect;
 end;
end;
СЕРВЕР
Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  z: string;
  X,Y:integer;
  K:TPoint;

   if SameText(Copy(z, 1, 11), 'mouse_move ') then
   begin
    z := AContext.Connection.IOHandler.ReadLn;
    if SameText(Copy(z, 1, 8), 'mouse_x ') then
    X:=StrToInt(Copy(z,9,4));

    z := AContext.Connection.IOHandler.ReadLn;
    if SameText(Copy(z, 1, 8), 'mouse_y ') then
    Y:=StrToInt(Copy(z,9,4));

    Log('Перемещение мыши');
    SetCursorPos(X,Y);
  end;

  if SameText(Copy(z, 1, 11), 'mouse_left ') then
   begin
    GetCursorPos(K);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN,K.X,K.Y,0,0);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP,K.X,K.Y,0,0);
    Log('Нажатие левой кнопки мыши');
   end;

   if SameText(Copy(z, 1, 12), 'mouse_right ') then
   begin
    GetCursorPos(K);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RIGHTDOWN,K.X,K.Y,0,0);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RIGHTUP,K.X,K.Y,0,0);
    Log('Нажатие правой кнопки мыши');
   end;

  AContext.Connection.Disconnect;
 end;
end;
ВОПРОСЫ:
1. можно ли реализовать функцию перетаскивания объектов, как приблизительно код может выглядеть?
2. можно ли реализовать прокрутку с использованием колесика мыши (мышь - два баттона и колесо, стандартная), в событиях компонента ИМЕДЖ1 нет обработки колеса
3. в принципе, нужно ли делать обработку событий типа клик, двойной клик и что там может быть еще связянное с мышью, чтобы приблизиться к функционалу MSRDP?
Pcrepair вне форума Ответить с цитированием
Старый 07.07.2011, 15:51   #2
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 267
По умолчанию

все в отпуске?
Pcrepair вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
drag and drop kelty Помощь студентам 0 11.09.2009 23:00
Drag and Drop nusik Общие вопросы C/C++ 2 09.07.2009 11:09
Нужна помощь (Drag-And-Drop & Drag-Abd-Dock)) Arkuz Общие вопросы Delphi 1 18.04.2009 00:15
Drag and Drop Xardas Общие вопросы Delphi 8 20.01.2008 23:09