Программно нужно узнать, запущено ли COM+ приложение с заданным именем или GUID.
Пытался сделать это через COMAdminCatalog, но мне не удалось получить коллекцию "ApplicationInstances".
При попытке получить эту коллекцию возникает ошибка: "Параметр задан неверно."
Что в этом коде не так? И вообще, может я не тем путем пошел?
Здравствуйте, gloomy rocker, Вы писали:
GR>Программно нужно узнать, запущено ли COM+ приложение с заданным именем или GUID. GR>Пытался сделать это через COMAdminCatalog, но мне не удалось получить коллекцию "ApplicationInstances".
ИМХО, COMAdminCatalog не поддерживает такую коллоекцию ("ApplicationInstances").
Задача вообще поставлена неверно. COM+ appliocation не может быть "запущен". Может быть инстанцирован один или несколько COM компонентов, инсталлированных в COM+ app. А что такое "запущенное" COM+ app мне, честно говоря, непонятно...
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Здравствуйте, EM, Вы писали:
EM>ИМХО, COMAdminCatalog не поддерживает такую коллоекцию ("ApplicationInstances").
Цитата из MSDN.
The ApplicationInstances collection is a top-level collection that is used to retrieve information regarding running applications. ms-help://MS.MSDNQTR.2002JUL.1033/cossdk/htm/comadmincollections_7qr2.htm
Если уж про нее пишут в MSDN, то как до этой коллекции достучаться?
EM>Задача вообще поставлена неверно. COM+ appliocation не может быть "запущен".
Под COM+ appliocation имелось в виду серверное приложение.
А запущен — значит имеется просесс dllhost.exe, запущеный следующим образом
dllhost.exe /ProcessID:{GUID серверного приложения}
Это происходит при инстанцировании одного или нескольких COM компонентов, инсталлированных в COM+ app.
EM>Может быть инстанцирован один или несколько COM компонентов, инсталлированных в COM+ app. А что такое "запущенное" COM+ app мне, честно говоря, непонятно...
Кроме того, "запустить COM+ app" можно еще из "Службы комопнентов", при этом ни один из COM компонентов не инстанцируется, а процесс dllhost.exe запускается. Плюс еще такой вариант:
Теперь попытаюсь переформулировать вопрос. Нужно узнать, существует ли процесс dllhost.exe, соответствующий серверному COM+ приложению с заданным именем или GUID.
Здравствуйте, gloomy rocker, Вы писали:
GR>Здравствуйте, EM, Вы писали:
EM>>ИМХО, COMAdminCatalog не поддерживает такую коллоекцию ("ApplicationInstances"). GR>Цитата из MSDN. GR>The ApplicationInstances collection is a top-level collection that is used to retrieve information regarding running applications. GR>ms-help://MS.MSDNQTR.2002JUL.1033/cossdk/htm/comadmincollections_7qr2.htm GR>Если уж про нее пишут в MSDN, то как до этой коллекции достучаться?
У меня на машине Platform SDK годичной давности и коллекции ApplicationInstances там определенно нет. Более того, в шестом MSDN тоже про нее ничего нет... Так что думаю, что эта коллекция вставлена недавно и у тебя Platform SDK старый
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Здравствуйте, EM, Вы писали:
EM>Про нее в MSDN еще пишут такую вещь : EM>Platform SDK Release: February 2003 EM>(см http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/comadmincollections_7qr2.asp)
Это я тоже читал.
EM>У меня на машине Platform SDK годичной давности и коллекции ApplicationInstances там определенно нет. Более того, в шестом MSDN тоже про нее ничего нет... Так что думаю, что эта коллекция вставлена недавно и у тебя Platform SDK старый
Я думаю, дело не в версии Platform SDK, а во внутренностях comadmin.dll, которая действительно старая, а новая входит в состав WinXP и COM+ 1.5, но это только догадки.
Меня интересует, как "Служба компонентов" определяет, какие приложения запущены (шары в коробках вращаются).
Здравствуйте, gloomy rocker, Вы писали:
GR>Здравствуйте, EM, Вы писали:
EM>>Про нее в MSDN еще пишут такую вещь : EM>>Platform SDK Release: February 2003 EM>>(см http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/comadmincollections_7qr2.asp) GR>Это я тоже читал.
EM>>У меня на машине Platform SDK годичной давности и коллекции ApplicationInstances там определенно нет. Более того, в шестом MSDN тоже про нее ничего нет... Так что думаю, что эта коллекция вставлена недавно и у тебя Platform SDK старый GR>Я думаю, дело не в версии Platform SDK, а во внутренностях comadmin.dll, которая действительно старая, а новая входит в состав WinXP и COM+ 1.5, но это только догадки.
Новая dll входит в состав нового SDK. Скачай его и посмотри. Должно заработать.
Опыт — это такая вещь, которая появляется сразу после того, как была нужна...
Re[6]: Как узнать состояние COM+ приложения?
От:
Аноним
Дата:
25.06.03 07:35
Оценка:
Здравствуйте, EM, Вы писали:
EM>>>У меня на машине Platform SDK годичной давности и коллекции ApplicationInstances там определенно нет. Более того, в шестом MSDN тоже про нее ничего нет... Так что думаю, что эта коллекция вставлена недавно и у тебя Platform SDK старый GR>>Я думаю, дело не в версии Platform SDK, а во внутренностях comadmin.dll, которая действительно старая, а новая входит в состав WinXP и COM+ 1.5, но это только догадки.
EM>Новая dll входит в состав нового SDK. Скачай его и посмотри. Должно заработать.
Вряд ли.
На COM+ 1.0 (Win2K) придется либо на события подписываться (IComAppEvents), либо посмотреть, что умеет по этому поводу WMI — возможно, оттуда эту информацию можно достать.