Добрый день!
потихоньку идет разработка аналога РАдмин, в рамках одного проекта в среде 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?