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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2012, 18:37   #1
Саня_
Пользователь
 
Регистрация: 05.03.2011
Сообщений: 36
Печаль Управление мышкой

Добрый день! Помогите, пожалуйста. Пишу клиент-серверную программу для удаленного управления ПК. Столкнулся с проблемой организации перемещения курсора мышки. Вот код программы, связанный с мышью...

Глобальные
Цитата:
cur:TPoint; //старые координаты курсора
cur2:TPoint; //новые координаты курсора
Изначально при запуске программы cur присваиваются координаты курсора (первая команда для перемещения курсора будет неправильной, но 1 командой, я думаю, можно пожертвовать). При установке сокет-соединения таймеру задается нужный интервал

Отправка координат изменения курсора (клиентская часть)
Цитата:
procedure TForm1.Timer1Timer(Sender: TObject);
var s:string;
begin
windows.GetCursorPos(cur2);
s:='K'+inttostr(cur2.X-cur.X)+' '+inttostr(cur2.y-cur.y);
ClientSocket2.Socket.SendText(s);
cur:=cur2;
s:='';
end;
Прием команды на сервере
Цитата:
procedure TForm1.ServerSocket2ClientRead(Send er: TObject;
Socket: TCustomWinSocket);
var Rtext,x,y: string; // Принятый текст
i,i2,k:integer;
begin
Rtext:= Socket.ReceiveText;
if Rtext[1]='K' then
begin
windows.GetCursorPos(cur);
k:=0;
x:='';
y:='';
for i:=2 to (Length(Rtext)-1) do
begin
if ((Rtext[i]<>' ')and (k=0)) then
begin
x:=x+Rtext[i];
Continue;
end;
if (Rtext[i]=' ') then
begin
k:=1;
y:=y+Rtext[i+1];
end;
end;
i:=cur.x+strtoint(x);
if (i<0) then i:=0;
if (i>1023) then i:=1023;
i2:=cur.y+strtoint(y);
if (i2<0) then i2:=0;
if (i2>767) then i2:=767;
i:= Round(i * (65535 / Screen.Width));
i2:= Round(i2 * (65535 / Screen.Height));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, i, i2, 0, 0);
end;
end;
В результате получаю следующие:
Курсок двигается только влево и вправо, и то не понятно каким образом... К тому же:


Если требуется, могу скинуть весь проект. ПОМОГИТЕ, ПОЖАЛУЙСТА
Саня_ вне форума Ответить с цитированием
Старый 17.12.2012, 20:30   #2
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Работать это не будет.
xoodoo вне форума Ответить с цитированием
Старый 17.12.2012, 20:40   #3
Саня_
Пользователь
 
Регистрация: 05.03.2011
Сообщений: 36
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
Работать это не будет.
из-за того, что информацию одной команды нужно передавать пакетом?
Саня_ вне форума Ответить с цитированием
Старый 17.12.2012, 20:45   #4
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Из-за того что документацию не читаешь.
SendText - функциональный метод.
xoodoo вне форума Ответить с цитированием
Старый 18.12.2012, 06:09   #5
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

пример тут http://www.delphimaster.ru/cgi-bin/f...1227604925&n=4
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
управление в 3D мышкой lazudhic Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 17.08.2012 16:46
Управление мышкой в программе Mc Doc Общие вопросы C/C++ 3 08.03.2012 08:01
Рисование мышкой Victor1963 Общие вопросы Delphi 5 04.05.2011 09:28
Перетаскивание мышкой Obey177 Общие вопросы Delphi 13 20.09.2010 11:10
Управление МЫШКОЙ!!! Рустам Помощь студентам 11 28.10.2007 12:15