Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.11.13;
Скачать: CL | DM;

Вниз

Сервер-клиент РДП. обработка кнопки мыши   Найти похожие ветки 

 
Pcrepair ©   (2011-07-23 18:49) [0]

Добрый день! Продолжается разработка клиент-серверного приложения типа РАДМИН (D2010 + INDY10)
Предыдущая версия работает( передача скрина сервера на клиент и передача координат курсора мыши клиента на сервер), но возникла непонятная проблема в клиенте с передачей нажатия кнопок мыши
Код клиента (усеченная версия)

unit main;
  interface
uses
type
 TForm1 = class(TForm)
   Image1: TImage;
   IdTCPClient1: TIdTCPClient;
   Timer1: TTimer;
   procedure connectClick(Sender: TObject);
   procedure GetScreen;
   procedure Timer1Timer(Sender: TObject);
   procedure mouse_move;
   procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
   { Private declarations }
 public
   { Public declarations }
   procedure connect_to_server;
 end;

var
 Form1: TForm1;
 Stream: TMemoryStream;

implementation

{$R *.dfm}
///+++++++++++++++++++++++++++++PROCEDURE++++++++++++++++++++++++++++++++++++++

procedure TForm1.connect_to_server;
begin
//тут все работает
end;

procedure TForm1.GetScreen;
var
Bitmap: TBitmap;
begin
//тут все работает
end;

// на компоненте ИМЕДЖ1 нужна обработка событий левой-правой кнопки, нажать-отжать
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
  if Button=mbLeft then
 begin
  IdTCPClient1.IOHandler.WriteLn("mouse_left_dw ");
 end;
if Button=mbRight then
begin
  IdTCPClient1.IOHandler.WriteLn("mouse_right_dw ");
end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if Button=mbLeft then
 begin
  IdTCPClient1.IOHandler.WriteLn("mouse_left_up ");
 end;
if Button=mbRight then
begin
  IdTCPClient1.IOHandler.WriteLn("mouse_right_up ");
end;
end;

procedure TForm1.mouse_move;
var
Kursor:TPoint;
begin
 //тут все работает
end;
///+++++++++++++++++++++++++++++PROCEDURE++++++++++++++++++++++++++++++++++++++
///+++++++++++++++++PROG++++++++++++++++++++++++++++++++++++++++++++++++++

procedure TForm1.connectClick(Sender: TObject);
begin
// тут все работает, просто запуск тамер1
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 connect_to_server; //тут все работает
 mouse_move; //тут все работает
 Image1MouseUp; // тут ИДЕ пишет - недостаточно актуальных параметров????????
 Image1MouseDown; // тут тоже самое
 GetScreen; //тут все работает
 IdTCPClient1.Disconnect;
end;
end.

ВОПРОС: какие такие параметры, это ведь вызов подпрограммы описанной выше, там и параметры указаны
можно конечно в отдельном цикле подключения все передать, как было сделано в предыдущей версии, но хотелось бы все в одном сеансе подключения к серверу


 
sniknik ©   (2011-07-23 22:03) [1]

> подпрограммы описанной выше, там и параметры указаны
в описаниях описания, а тут хочет реальные параметры, по описанным.

не хочешь книжку по языку почитать? полезно.


 
Pcrepair ©   (2011-07-23 22:13) [2]


> а тут хочет реальные параметры, по описанным.

что это значит?


 
Andy BitOff ©   (2011-07-23 23:28) [3]

> Pcrepair ©   (23.07.11 22:13) [2]
> что это значит?


> sniknik ©   (23.07.11 22:03) [1]
> не хочешь книжку по языку почитать? полезно.

В любой книжке об этом написано.


 
sniknik ©   (2011-07-23 23:43) [4]

> что это значит?
это когда в магазине написано, "спиртное по предъявлению паспорта/документа" это описание, а когда на кассе предъявляешь то кассиру нужен паспорт/документ, а не то что у них на входе, слово, написано.
описание нужно только для того чтобы знать что, чтобы при проверке например трамвайный билет не подсунули, а использовать можно только реальный.


 
Pcrepair ©   (2011-07-23 23:47) [5]

так откуда же эти параметры взять?
в предыдущей версии клиента (полностью рабочей)имело место следующее:

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_up ");
 IdTCPClient1.Disconnect;
 end;
if Button=mbRight then
begin
 IdTCPClient1.Host:=HOST.Text;
 IdTCPClient1.Port:=StrToInt(PortNumber.Text);
 IdTCPClient1.Connect;
 IdTCPClient1.IOHandler.WriteLn("mouse_right_up ");
 IdTCPClient1.Disconnect;
end;
end;

то есть было асинхронное подключение к серверу, передача в сервер команды и отключение клиента  от сервера
но никаких запросов параметров со стороны компиллятора не было
в текущей версии просто нужно сделать обработку всех событий по таймеру


 
sniknik ©   (2011-07-24 00:02) [6]

> так откуда же эти параметры взять?
ну, откуда нам знать? это не код, это уже логика программы, а ее ты придумываешь... во кстати, можешь их придумать, или генерировать случайным образом.

> нужно сделать обработку всех событий по таймеру
события по таймеру????? это уже не события будут, это фигня какая то...
ну вот, загорелся зеленый свет светофора, это событие, или красный, тоже событие... (не в смысле Событие, что-то важное произошло, а событие, определенное действие в определенный момент, с определенной периодичностью... или без нее, если есть кнопка к которой можно подойти и нажать если хочешь перейти улицу ).
а вот если собрать их и сделать по таймеру... это они что все одновременно? или с нарушенной периодичностью, таймер то будет независимый от светофора (по определению, т.к. мышь это другое устройство, не таймер).

повторю вопрос/пожелание
> не хочешь книжку по языку почитать? полезно.
???


 
Pcrepair ©   (2011-07-24 00:13) [7]

книжек много всяких и разных
но таких чтоб был конкретный ответ на конкретный вопрос - нет

мне нужно просто понять, что реально а что нет
возможно что прийдется по разному реализовать контрольный режим (это то о что сейчас обсуждается) и рабочий режим программы. там вообще данные от клавы и мыши будут виртуальные (генерироваться отдельным модулем программы) по команде(асинхроннный аналог таймера) будут передоваться на удаленный хост а с хоста будет получаться скрин экрана, для последующей обработки


 
Германн ©   (2011-07-24 01:09) [8]


>  Pcrepair ©   (24.07.11 00:13) [7]
>
> книжек много всяких и разных
> но таких чтоб был конкретный ответ на конкретный вопрос
> - нет

Книжки нужны чтобы изучить основы. А конкретный ответ на конкретный вопрос - это да. Это на форумы. Но привыкай, что на форумах так просто не даются ответы тем, кто не изучил основы. :)

А тут на ДМ есть очень хорошие спецы по твоей тематике. Только они пока молчат, ибо все тут очень не любят "ламеров".


 
sniknik ©   (2011-07-24 10:22) [9]

> ибо все тут очень не любят "ламеров".
любят не любят тут не причем (не девушка), общаться с ними бесполезно, как об стенку горох, а потому не нравится/не хотят/не видят смысла/... (любовь слишком сильно).
вот данному товарищу в соседней ветке нашли и указали на глюк (использование VCL в потоке), так он это попросту проигнорировал... на основании "ну работает же", и что будешь делать? потоки ему с 0-я объяснять, все банальные вещи в работе с ними, из книжек сюда переписывать?
нет, просто второй раз нашедший(и многие просто читавшие это) даже если им здесь есть, что сказать промолчат.


 
Pcrepair ©   (2011-07-24 11:47) [10]

все уже работает. нужно было немного изменить логику работы программы
что касается

> вот данному товарищу в соседней ветке нашли и указали на
> глюк (использование VCL в потоке), так он это попросту проигнорировал.
>

так там это временно, как элемент контроля - помогает кстати
на финише сервер будет работать как сервис, VCL вообще не будет


 
sniknik ©   (2011-07-24 12:21) [11]

> на финише сервер будет работать как сервис
на vista, win7 читать экран, и посылать его куда то? не будет. просто так не будет. у человека не дочитавшего основы по языку, и не знающего как вызывать процедуры на исполнение... точно не будет.
или ты ориентируешься исключительно на xp/win2000?


 
Pcrepair ©   (2011-07-24 14:06) [12]

исключительно



Страницы: 1 вся ветка

Текущий архив: 2011.11.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
11-1239646702
imp
2009-04-13 22:18
2011.11.13
Проблема с событием OnPaint в TKOLMemo


15-1310675392
Юрий
2011-07-15 00:29
2011.11.13
С днем рождения ! 15 июля 2011 пятница


15-1310773444
Kerk
2011-07-16 03:44
2011.11.13
Google Docs Viewer Supports ZIP and RAR Archives


2-1311744151
Шел мимо решил зайти
2011-07-27 09:22
2011.11.13
работа с excel


1-1272628592
Яцхен
2010-04-30 15:56
2011.11.13
Как вывести форму на панельке или табшите другой формы?