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

 



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.04.2021, 19:42
APTEMKA APTEMKA вне форума
Прохожий
 
Регистрация: 28.09.2019
Сообщения: 13
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Удалённое управление мыши через socket

Всех приветствую необходимо организовать удалённое управление курсором мыши по локальной сети с serversocket'а на clientsocket. Собственно проблема в том,что могу передавать перемещение мыши. На clientsocket'е:
Код:
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 мс:
Код:
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,отсылая просто букву, но просто нет реакции.
Код:
//на сервере 
procedure TForm1.FormClick(Sender: TObject); 
 var Mous:Tpoint; 
 begin 
GetCursorPos(Mous); 
ServerSocket1.Socket.Connections[0].SendText('l'+IntToStr(Mous.X)+'_'+IntToStr(Mous.Y)); 
end;
На клиенте принимал:
Код:
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);
Пытался "кликать" через
Код:
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 разделять эти две команды,но ничего не получилось.
Прошу помощи,возможно кто работал с этим и у него есть оптимизированный и рабочий алгоритм, ну и не забрасывайте тапками.
Ответить с цитированием
Ответ



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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter