Delphi - Как в Delphi узнать, запущен ли Word или Excel

Ответить
Аватара пользователя
Kroc

Delphi - Как в Delphi узнать, запущен ли Word или Excel

Сообщение Kroc »

FindWindow()не катит, т.к. нужно знать точное название заголовка. Если

перебирать все окна, и сравнивать по части строки заголовка - как-то некрасиво.

Кто знает метод поинтересней?
Аватара пользователя
Kroc

Re: Delphi - Как в Delphi узнать, запущен ли Word или Excel

Сообщение Kroc »

Kroc

Поискать по имени файла процесса?

Поискать по имени КЛАССА окна?

Поискать в Running Object Table (не уверен, впрочем, что они там регистрируются)?



Вопрос на засыпку: если я в своей программе создаю объект Word.Application и он создается в МОЕМ процессе, при этом ни одного окна с ним связанного нет, это считается, что WORD запущен?
Аватара пользователя
Kroc

Re: Delphi - Как в Delphi узнать, запущен ли Word или Excel

Сообщение Kroc »

vasketsov


Цитата:



по имени файла процесса



Если применить CreateToolhelp32Snapshot , а затем перебирать с помощью

Process32First и Process32Next ? *Так опять перебирать... Или ещё как?


Цитата:



Поискать по имени КЛАССА окна?



Да уж...(см. свой же вопрос). Нужно вычислить именно запущённое в ЛЮБОЙ форме приложение Оффиса.


Цитата:



Поискать в Running Object Table



Как? Ну, допустим, вызвал я GetRunningObjectTable, получил указатель на ROT, а

дальше... что-то смутно понимаю как это сделать. Изображение



Вот я что придумал:

перехватить ошибку OleSysError при

GetActiveOleObject('Excel.Application'); // так же с Word

вообще-то работает...
Аватара пользователя
vasketsov

Re: Delphi - Как в Delphi узнать, запущен ли Word или Excel

Сообщение vasketsov »

Kroc

1. Сомневаюсь, что будет работать, если Word запущен на другом WindowStation/Desktop и к нему нет доступа.

2. Чую, что задача немного не та решается, например, может надо просто узнать, что определенный файл используется, и т.п.
Аватара пользователя
vasketsov

Re: Delphi - Как в Delphi узнать, запущен ли Word или Excel

Сообщение vasketsov »

vasketsov

Вообще-то задача такая:

Написал "надстройку для модели COM" для Ворда  и Экселя, чтобы одновременно с их запуском подгружать мой ехешник. Так вот ехешничку и надо подконнектиться...

Всё бы ничего, но при таком запуске как раз одновременности и нетИзображение  Я засекал время, подключение происходит только через 3-4 секунды после запуска обоих программ.
Аватара пользователя
Kroc

Re: Delphi - Как в Delphi узнать, запущен ли Word или Excel

Сообщение Kroc »

Нормальные герои идут кривым путём Изображение

uses ... ComObj,...

...

var

   ExAp : Variant;

begin

 try    

//если не найден, вызывается исключение

   ExAp := GetActiveOleObject('Excel.Application');



    except



 end;

...

Аналогично с Word.



Тему можно закрыть...Спасибо всем.
Ответить

Вернуться в «Программирование и базы данных»