Несколько экземпляров приложения
Задача (по этапам):
1) запустить документ (в ассоциированном с разрешением файла приложении);
2) получить ссылку на главное окно приложения;
3) изменить размеры окна.
Изменить размеры просто, а вот получить ссылку не очень: дело в том, что не все приложения для каждого открытого документа используют отдельный процесс.
Например, Acrobat Reader при открытии второго PDF-документа запускает второй процесс (точнее два, но не суть), а потом находит первый процесс и закрывает второй, перемещая документ в памяти. Так вот, первоначальная задача свелась к задаче перехвата события закрытия процесса (вариант с таймерами не предлагать - по-деревенски, я ищу лучший способ). В случае с Acrobat'ом ничего сложного: в .NET есть событие
Код:
Process.Exited
Но помимо PDF-документов есть еще куча других, в частности Djvu. В качестве читалки использую WinDjView. И на этой программе вышеуказанное событие не сработало при открытии второго документа. Т.е. ведь как обычно: запускается второй процесс, пытаемся установить мьютекс, не получается (процесс уже запущен), передаем все что надо и закрываем процесс (тут-то и срабатывает вышеуказанное событие).
Помогите, пожалуйста, понять какие механизмы ОС использует WinDjView и почему второго процесса не создается.
Благодарю.
Ответ, кажется, найден. DDE.
Если надо только изменить размеры окна, то для этого нужен хэндл окна, а не процесса. Найти, обычно, можно по имени класса.
Цитата: CassandraDied
Если надо только изменить размеры окна, то для этого нужен хэндл окна, а не процесса. Найти, обычно, можно по имени класса.
На минусы обижаться не надо. Надо просто принять факт, что экспертом везде быть невозможно и отвечать только на вопросы, ответ на которые 100% верен. Кроме того, вы не поняли вопрос.
Я однажды уже спрашивал и получил ложный ответ. В итоге - месячную работу пришлось хоть и частично, но весьма существенно переделывать.