FindWindow()не катит, т.к. нужно знать точное название заголовка. Если
перебирать все окна, и сравнивать по части строки заголовка - как-то некрасиво. Кто знает метод поинтересней? |
Kroc
Поискать по имени файла процесса? Поискать по имени КЛАССА окна? Поискать в Running Object Table (не уверен, впрочем, что они там регистрируются)? Вопрос на засыпку: если я в своей программе создаю объект Word.Application и он создается в МОЕМ процессе, при этом ни одного окна с ним связанного нет, это считается, что WORD запущен? |
vasketsov
Цитата:
Process32First и Process32Next ? *Так опять перебирать... Или ещё как? Цитата:
Цитата:
дальше... что-то смутно понимаю как это сделать. :( Вот я что придумал: перехватить ошибку OleSysError при GetActiveOleObject('Excel.Application'); // так же с Word вообще-то работает... |
Kroc
1. Сомневаюсь, что будет работать, если Word запущен на другом WindowStation/Desktop и к нему нет доступа. 2. Чую, что задача немного не та решается, например, может надо просто узнать, что определенный файл используется, и т.п. |
vasketsov
Вообще-то задача такая: Написал "надстройку для модели COM" для Ворда и Экселя, чтобы одновременно с их запуском подгружать мой ехешник. Так вот ехешничку и надо подконнектиться... Всё бы ничего, но при таком запуске как раз одновременности и нет:( Я засекал время, подключение происходит только через 3-4 секунды после запуска обоих программ. |
Нормальные герои идут кривым путём :)
uses ... ComObj,... ... var ExAp : Variant; begin try //если не найден, вызывается исключение ExAp := GetActiveOleObject('Excel.Application'); except end; ... Аналогично с Word. Тему можно закрыть...Спасибо всем. |
Время: 19:26. |
Время: 19:26.
© OSzone.net 2001-