Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> System.Diagnostics.Process не ждет ввода окна 
:(
    Опции темы
georg001
Дата 14.6.2013, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте.
Есть приложение написанное на C++ .NET. В ходе выполнения оно запускает другие приложения и получает их "хендлы" для обмена с ними стандартными сообщениями. 

Код

ProcessStartInfo^ startInfo = gcnew ProcessStartInfo();
startInfo->WorkingDirectory = Path::GetDirectoryName(fpath);
startInfo->FileName = fpath;
eprocess = Diagnostics::Process::Start(startInfo);
eprocess->WaitForInputIdle();
windowHandle = (HWND)eprocess->MainWindowHandle.ToInt32();
eprocess->EnableRaisingEvents = true;
eprocess->Exited += gcnew EventHandler(this,&effectlauncher::onProcessExited);


Проблема в вызове eprocess->WaitForInputIdle(); на практике оказалось что выполнение программы не приостанавливается до входа запущенного приложения в цикл обработки сообщений или приостанавливается но не всегда. Поэтому раз на раз получаются не верные "хендлы". В подтверждение этому если вставить Sl eep(1000) после eprocess->WaitForInputIdle(); то все начинает работать правильно.
Но этот "костыль" меня не устраивает. Вопрос: как надежно приостановить выполнение программы до получения ввода вызванного приложения.
Спасибо за внимание.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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