Показать сообщение отдельно
  #1  
Старый 07.07.2011, 14:09
Pcrepair
 
Сообщения: n/a
По умолчанию Мышь drag-drop в аналоге RAdmin

Добрый день!
потихоньку идет разработка аналога РАдмин, в рамках одного проекта в среде D2010 ИНДИ10
на текущий день есть код переноса отжатия кнопок мыши с клиента на сервер в компоненте ИМЕДЖ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));
    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);
   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);
   end;

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