1 / 1 / 0
Регистрация: 03.06.2011
Сообщений: 33
1

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

13.07.2012, 12:28. Показов 823. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Посредством API из основной программы запускается стороннее приложение, которое выполняет какие то задачи (открывает, конвертирует и сохраняет файлы на диске).
Можно ли как-то определить, что обработка данных в этом приложении закончилась и оно просто висит без дела? Нужно, понятно, для того, чтобы закрыть его.
Помогите советом пожалуйста!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2012, 12:28
Ответы с готовыми решениями:

Экранная клавиатура - как что-то вписать в стороннее приложение
Возникла необходимость в экранной клавиатуре! Стандартная мне не нравится! Как сделать так чтобы в...

Как определить, в фокусе или нет стороннее приложение
Доброго времени суток. Подскажите пожалуйста, как определить в фокусе или нет стороннее приложение....

Как определить, в фокусе или нет стороннее приложение
Доброго времени суток. Подскажите пожалуйста, как определить в фокусе или нет стороннее приложение....

Отправка данных в стороннее приложение
Доброго времени суток! Хотелось бы узнать, как сделать так чтобы например в текстбокс было введено...

5
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
13.07.2012, 12:30 2
Какая ОС, какое приложение (оконное/консольное), как запускается, что значит висит без дела..
0
1 / 1 / 0
Регистрация: 03.06.2011
Сообщений: 33
13.07.2012, 12:41  [ТС] 3
Операционка- Windows (XP или 7). Основная программа- оконное приложение. Запускаемая из нее программа- тоже оконное пр., к коду которого доступа понятно нет. Висит без дела - это значит, что оно закончило обработку каких-то данных. Работой стороннего приложения я управляю симуляцией клавиатуры (в стороннем приложении есть "горячие" клавиши) путем

C#
1
2
SendKeys.SendWait(...);
Thread.Sleep(...);
После выполнения каких то операций оно просто висит без дела и мне надо его закрыть. Но т.к. те же операции сохранения на диске больших файлов требуют времени, мне хотелось бы точно поймать момент, когда, н-р операция сохранения закончена, чтобы закрыть это приложение
0
20 / 20 / 2
Регистрация: 01.05.2012
Сообщений: 61
16.07.2012, 04:41 4
1. Сторонняя программа вероятно как-то сообщает, что она закончила обработку файлов, например, создает MessageBox с сообщение "All done". Можно, например, каждую секунду просматривать дерево дочерних окон этого приложения с целью найти этот MessageBox, который говорит о окончании работы с файлами.
2. Можно проверять длину файла-результата. Например, ваша сторонняя прога берет фаил 1.txt и делает 2.txt. Проверяем каждые 5 секунд размер 2.txt. Если в течении 5 секунд его размер не увеличился, полагаем, что работа проги закончена. Более приятным было бы, если прога ставит лок на 2.txt, тогда способность открыть 2.txt из главного треда есть сигнал завершения сторонней проги.
3. Перехватываем WinAPI CloseHandle с помощью инджектируемой Длл-и.
1
1 / 1 / 0
Регистрация: 03.06.2011
Сообщений: 33
16.07.2012, 10:31  [ТС] 5
С 3-им пунктом не совсем понятно - нельзя ли как-то поподробнее?
Стороннюю прогу я включил в ресурсы, откуда она распаковывается в exe. - ик. Как мне перехватить этот хэндл?
0
20 / 20 / 2
Регистрация: 01.05.2012
Сообщений: 61
16.07.2012, 12:09 6
Цитата Сообщение от papusik Посмотреть сообщение
С 3-им пунктом не совсем понятно - нельзя ли как-то поподробнее?
Стороннюю прогу я включил в ресурсы, откуда она распаковывается в exe. - ик. Как мне перехватить этот хэндл?
Ну, по поводу перехвата функций ВинАПИ исписаны мегабайты мануалов. Можно тут взглянуть:
http://korzh.net/2009-12-perex... nkcij.html
0
16.07.2012, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2012, 12:09
Помогаю со студенческими работами здесь

Ввод данных в стороннее приложение не с клавиатуры
у меня есть готовая *.exe, в которой осуществляется запись и чтение (вид...

Прием и отправка данных в стороннее консольное приложение
Всем доброго времени суток. Не нашёл раздела для с#, решил создать здесь. Проблема следующая есть...

База данных находится в неизвестном состоянии, её не удается открыть в приложении
Форумчане, доброго времени суток! У одного из пользователей разделенной БД Аксесс 2003 ( таблицы...

Как определить, запущено ли уже приложение?
Можно ли определить, запущено ли уже приложение???? Возможноли скрыть окно ДОС режима???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru