Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите с кодом 
:(
    Опции темы
BLACK_KOT
Дата 31.7.2008, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: -1
Всего: -1



с клиента на сервер поступают строковые команды : сфоткать экран или переместить курсор:
Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 fs: TFileStream;
begin
if Socket.ReceiveText = 'cursor' then  SetCursorPos(500,500);

if Socket.ReceiveText = 'screen' then
  begin
   fs:=TFileStream.Create('c:\2.jpg', fmOpenRead);
   try
    fs.Position:= 0;
    Socket.SendText('Size:'+IntToStr(fs.Size) + #0);
    Socket.SendStream(fs);
   finally
   end;
  end;
end;

 
в этом варианте работает тока передвижение курсора, а вторая команда ваще не проходит почему то, когда как если делать через "else" - работает всё :
Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 fs: TFileStream;
begin

if Socket.ReceiveText = 'screen' then
  begin
   fs:=TFileStream.Create('c:\2.jpg', fmOpenRead);
   try
    fs.Position:= 0;
    Socket.SendText('Size:'+IntToStr(fs.Size) + #0);
    Socket.SendStream(fs);
   finally
   end;
  end
  else SetCursorPos(500,500);
end;

почему так происходит кто нить объяснит? или мне теперь все команды придётся писать через "else". и как лучше с точки зрения профессианалов?


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
qwe113
Дата 31.7.2008, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Что тут не понятного?
Метод ReceiveText достает из внутреннего буфера данные (строку). В первом случае, ты два раза его вызываешь, и конечно же второй вызов ReceiveText дает другой результат нежели первый.

ТЧтобы твой первый способ работал, необходимо вставить пару строк:
Код

...
var Cmd: string;
....
begin
Cmd := Socket.ReceiveText;


if Cmd = 'cursor' .....
....

PM MAIL   Вверх
BLACK_KOT
Дата 1.8.2008, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: -1
Всего: -1



благодарю!


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
BLACK_KOT
Дата 1.8.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: -1
Всего: -1



ёмоё, вот ещё проблема:
Код

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
 fs: TFileStream; Cmd: string;
begin
Cmd := Socket.ReceiveText;
if Cmd= 'RMouse' then
  begin
  mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
  mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
   end;
if Cmd= 'LMouse' then
  begin
  mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
  mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
   end;
if Cmd = 'screen' then
  begin
   fs:=TFileStream.Create('c:\2.jpg', fmOpenRead);
   try
    fs.Position:= 0;
    Socket.SendText('Size:'+IntToStr(fs.Size) + #0);
    Socket.SendStream(fs);
   finally
   end;
  end;
end;


команда скрин проходит нормально, а вот с командами от клавиш мыши хрень какая то.
посылал с клиента команды и через onClick и через onkeyup  и через хук - всё время на серваке
 эта команда многократно почему то повторяется. тоесть на посланный клик правой кнопкой мыши - на серваке раз 20 (поразному) кликает. кто нить подскажет из за чего это и как устранить?


Это сообщение отредактировал(а) BLACK_KOT - 1.8.2008, 13:18


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.