• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Indy Tcpserver

  • Автор темы Frodo
  • Дата начала
Статус
Закрыто для дальнейших ответов.
F

Frodo

Задача: при получении команды от клиента сервер должен открыть в ворде документ.

Код:
uses
...Word2000,IdComponent, IdTCPServer....

procedure TMainForm.IdTCPServer1Execute(AThread: TIdPeerThread);
var
Ss:String;
DocName:OleVariant;
begin
DocName:='C:\boot.doc';
try
with AThread.Connection do
begin
 Ss:=ReadLn();
 if Ss='Get' then
 begin
  WordApplication1.Documents.Open(DocName,EmptyParam, EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
  WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
 end;
....

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

Как на время остановить или закрыть поток созданный сервером и передать управления для работы с вордом
 
Z

zubr

Код:
AThread.Suspend;//останавливаем поток
 WordApplication1.Documents.Open(DocName,EmptyParam, EmptyParam, EmptyParam,EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
 WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
AThread.Resume;//продолжаем выполнение потока
 
F

Frodo

попробовал но никаного эффекта. все что следует после

Код:
AThread.Suspend;

просто не выполняется. Может это какой то глюк Indy 8 (у меня эта версия стоит)

Можно ли из вне (не из OnExecute) вызвать Suspend? и если можно то как?
 
B

Barmutik

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

А с другой стороны в чём проблема что Вы из потока клиента создаёте ещё один поток ?
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!