Показать полную графическую версию : Как в Delphi узнать, запущен ли Word или Excel
FindWindow()не катит, т.к. нужно знать точное название заголовка. Если
перебирать все окна, и сравнивать по части строки заголовка - как-то некрасиво.
Кто знает метод поинтересней?
vasketsov
14-10-2004, 13:32
Kroc
Поискать по имени файла процесса?
Поискать по имени КЛАССА окна?
Поискать в Running Object Table (не уверен, впрочем, что они там регистрируются)?
Вопрос на засыпку: если я в своей программе создаю объект Word.Application и он создается в МОЕМ процессе, при этом ни одного окна с ним связанного нет, это считается, что WORD запущен?
vasketsov
по имени файла процесса
Если применить CreateToolhelp32Snapshot , а затем перебирать с помощью
Process32First и Process32Next ? *Так опять перебирать... Или ещё как?
Поискать по имени КЛАССА окна?
Да уж...(см. свой же вопрос). Нужно вычислить именно запущённое в ЛЮБОЙ форме приложение Оффиса.
Поискать в Running Object Table
Как? Ну, допустим, вызвал я GetRunningObjectTable, получил указатель на ROT, а
дальше... что-то смутно понимаю как это сделать. :(
Вот я что придумал:
перехватить ошибку OleSysError при
GetActiveOleObject('Excel.Application'); // так же с Word
вообще-то работает...
vasketsov
15-10-2004, 18:27
Kroc
1. Сомневаюсь, что будет работать, если Word запущен на другом WindowStation/Desktop и к нему нет доступа.
2. Чую, что задача немного не та решается, например, может надо просто узнать, что определенный файл используется, и т.п.
vasketsov
Вообще-то задача такая:
Написал "надстройку для модели COM" для Ворда и Экселя, чтобы одновременно с их запуском подгружать мой ехешник. Так вот ехешничку и надо подконнектиться...
Всё бы ничего, но при таком запуске как раз одновременности и нет:( Я засекал время, подключение происходит только через 3-4 секунды после запуска обоих программ.
Нормальные герои идут кривым путём :)
uses ... ComObj,...
...
var
ExAp : Variant;
begin
try
//если не найден, вызывается исключение
ExAp := GetActiveOleObject('Excel.Application');
except
end;
...
Аналогично с Word.
Тему можно закрыть...Спасибо всем.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.