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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2011, 16:30   #1
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию Параметры и свойства компонента ТIdTCPServer в Indy10, неясно где их искать

Добрый день
Есть следующая процедура с Использованием ИНДИ9
Код:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  z: string;
  fstream:TFileStream;
  X,Y:integer;

  K:TPoint;
begin
  with AThread.Connection do
  begin
   //Читаем что прислало нам клиентское приложение
   z := ReadLn;
   //Если это скриншот экрана, то отправляем
   if SameText(Copy(z, 1, 11), 'get_screen ') then
   begin
    Log('Запрошен скриншот');
    //Вызываем процедуру снятия скриншота
    GET_SCREEN;
    //Создаем поток
    fStream := TFileStream.Create(ExtractFilePath(Application.ExeName)+'\'+'s.png',
                                  fmOpenRead	+ fmShareDenyNone);
    //ПЕРЕДАЕМ файл клиентскому приложению
    OpenWriteBuffer;
    Log('Передаем файл s.png');
    WriteStream(fStream);
    Log('Файл передан');
    CloseWriteBuffer;

    //Уничтожаем поток
    FreeAndNil(fStream);
   end;

   //Если перемещение мыши, то
   if SameText(Copy(z, 1, 11), 'mouse_move ') then
   begin
    //Читаем координату X
    z := ReadLn;
    if SameText(Copy(z, 1, 8), 'mouse_x ') then
    //от 9 и до конца строки читаем координату X
    X:=StrToInt(Copy(z,9,4));

    //Читаем координату Y
    z := ReadLn;
    if SameText(Copy(z, 1, 8), 'mouse_y ') then
    //от 9 и до конца строки читаем координату   y
    Y:=StrToInt(Copy(z,9,4));

    Log('Перемещение мыши');
    //Перемещаем курсор мыши
    SetCursorPos(X,Y);
  end;

  //Если нажата левая кнопка мыши
  if SameText(Copy(z, 1, 11), 'mouse_left ') then
   begin
    GetCursorPos(K);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN,K.X,K.Y,0,0);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP,K.X,K.Y,0,0);
    Log('Нажатие левой кнопки мыши');
   end;

   //Если нажата правая кнопка мыши
   if SameText(Copy(z, 1, 12), 'mouse_right ') then
   begin
    GetCursorPos(K);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RIGHTDOWN,K.X,K.Y,0,0);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_RIGHTUP,K.X,K.Y,0,0);
    Log('Нажатие правой кнопки мыши');
   end;

  //Рвем соединение с клиентом
  AThread.Connection.Disconnect;
 end;
end;
Здесь частично переписанный аналог процедуры для ИНДИ10
Компиллятор выставляет ошибки компилляции

Код:
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  z: string;
  fstream:TFileStream;
  X,Y:integer;

  K:TPoint;
begin
  with AContext.Connection do
  begin
   //Читаем что прислало нам клиентское приложение
   z := AContext.Connection.IOHandler.ReadLn;
   //Если это скриншот экрана, то отправляем
   if SameText(Copy(z, 1, 11), 'get_screen ') then
   begin
    Log('Запрошен скриншот');
    //Вызываем процедуру снятия скриншота
    GET_SCREEN;
    //Создаем поток
    fStream := TFileStream.Create(ExtractFilePath(Application.ExeName)+'\'+'s.png',
                                  fmOpenRead	+ fmShareDenyNone);
    //ПЕРЕДАЕМ файл клиентскому приложению
    AContext.Connection.IOHandler.Write(fStream,fStream.Size,true);
    Log('Передаем файл s.png');
    AContext.Connection.WriteStream(fStream); ВОТ ТУТ ОШИБКА!!!
    Log('Файл передан');
    AContext.Connection.Close; ВОТ ТУТ ОШИБКА!!!

    //Уничтожаем поток
    FreeAndNil(fStream);
   end;

   //Если перемещение мыши, то
   if SameText(Copy(z, 1, 11), 'mouse_move ') then
   begin
    //Читаем координату X
    z := ReadLn; ВОТ ТУТ ОШИБКА!!
    if SameText(Copy(z, 1, 8), 'mouse_x ') then
    //от 9 и до конца строки читаем координату X
    X:=StrToInt(Copy(z,9,4));

    //Читаем координату Y
    z := ReadLn; ВОТ ТУТ ОШИБКА!!
    if SameText(Copy(z, 1, 8), 'mouse_y ') then
    //от 9 и до конца строки читаем координату   y
    Y:=StrToInt(Copy(z,9,4));

    Log('Перемещение мыши');
    //Перемещаем курсор мыши
    SetCursorPos(X,Y);
  end;

  //Если нажата левая кнопка мыши
  if SameText(Copy(z, 1, 11), 'mouse_left ') then
   begin
    GetCursorPos(K);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN,K.X,K.Y,0,0);
    mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP,K.X,K.Y,0,0);
    Log('Нажатие левой кнопки мыши');
   end;



  //Рвем соединение с клиентом
  AContext.Connection.Disconnect;
 end;
end;
В общем, не ясно, что тут надо переделать чтоб компиляция хотя бы прошла без ошибок. Если кто знает ИНДИ10, укажите на ошибки

выделенный список ошибок компилляции, чтоб проще читалось
Код:
AContext.Connection.WriteStream(fStream); 
AContext.Connection.Close; 
//Читаем координату X
    z := ReadLn; 
//Читаем координату Y
    z := ReadLn;
что то в синтаксисе не так, но что?
Pcrepair вне форума Ответить с цитированием
Старый 19.06.2011, 06:56   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

передавайте потоком... примеры на форуме есть..в моих постах
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 20.06.2011, 08:27   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

1.
Код:
//AContext.Connection.WriteStream(fStream);
 fStream.Seek(0,0); 
AContext.Connection.IOHandler.Write(fStream,0,true);
2.
Код:
// z := ReadLn; 
 z := IOHandler.ReadLn;

Последний раз редактировалось SERG1980; 20.06.2011 в 08:31.
SERG1980 вне форума Ответить с цитированием
Старый 20.06.2011, 18:47   #4
Pcrepair
Форумчанин
 
Регистрация: 04.01.2011
Сообщений: 260
По умолчанию

Всем спасибо
все заработало, но не совсем так как 3 посте, но похоже
Код:
AContext.Connection.IOHandler.WriteBufferOpen(fStream.Size);
AContext.Connection.IOHandler.Write(fStream);
AContext.Connection.IOHandler.Close;
z := AContext.Connection.IOHandler.ReadLn;
AContext.Connection.Disconnect;
возможно такой синтаксис не совсем корректный но почему то работает
Pcrepair вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где искать.. misher Свободное общение 0 01.07.2010 21:56
где искать стандарты? Пепел Феникса Общие вопросы по программированию, компьютерный форум 4 14.05.2010 21:43
свойства компонента street-walker Помощь студентам 2 07.01.2010 23:49
Где искать программистов? ulis777 Свободное общение 9 29.12.2008 15:48
Подскажите где искать Broth PHP 1 03.10.2008 01:26