Всех приветствую необходимо организовать удалённое управление курсором мыши по локальной сети с serversocket'а на clientsocket. Собственно проблема в том,что могу передавать перемещение мыши. На clientsocket'е:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | x := ' ' ;
y := ' ' ;
str:= Socket . ReceiveText;
for i:= 1 to Length(str) do begin
if str[i] <> '_' then x:= x + str[i];
if str[i] = '_' then Break;
end ;
for j:= i+ 1 to Length(str) do y:= y+str[j];
SetCursorPos(StrToInt(x), StrToInt(y));
|
С serversocket'а отправляю с помощью таймера 190 мс:
Код:
1 2 3 4 5 6 | procedure TForm1 . Timer1Timer(Sender: TObject);
var Mous:Tpoint;
begin
GetCursorPos(Mous);
ServerSocket1 . Socket . Connections[ 0 ].SendText(IntToStr(Mous . X)+ '_' +IntToStr(Mous . Y));
end ;
|
Однако никак не могу корректно передать клик мыши, потоки информации смешиваются и ругается в итоге на то,что присланное сообщение не является целым (видимо происходит при переводе strtoint).
Пытался передавать и через OnClick,отсылая просто букву, но просто нет реакции.
Код:
1 2 3 4 5 6 7 | procedure TForm1 . FormClick(Sender: TObject);
var Mous:Tpoint;
begin
GetCursorPos(Mous);
ServerSocket1 . Socket . Connections[ 0 ].SendText( 'l' +IntToStr(Mous . X)+ '_' +IntToStr(Mous . Y));
end ;
|
На клиенте принимал:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | if str[ 1 ]= 'l' then begin
for i:= 2 to Length(str) do begin
if str[i] <> '_' then x:= x + str[i];
if str[i] = '_' then Break;
end ;
for j:= i+ 1 to Length(str) do y:= y+str[j];
SetCursorPos(StrToInt(x), StrToInt(y));
mouse_event(MOUSEEVENTF_LEFTDOWN, StrToInt(x), StrToInt(y), 0 , 0 );
mouse_event(MOUSEEVENTF_LEFTUP, StrToInt(x), StrToInt(y), 0 , 0 );
|
Пытался "кликать" через
Код:
1 2 | mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RightDOWN, StrToInt(xx), StrToInt(yy), 0 , 0 );
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, StrToInt(xx), StrToInt(yy), 0 , 0 );
|
Пробовал через mousedown и mouseup разделять эти две команды,но ничего не получилось.
Прошу помощи,возможно кто работал с этим и у него есть оптимизированный и рабочий алгоритм, ну и не забрасывайте тапками.
