Список запущенных экземпляров COM-серверов.

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Список запущенных экземпляров COM-серверов.

Hide » 02 фев 2006, 05:36

Спасибо, большое-пребольшое! Очень похоже, что это поможет. Я пыталась подцепить пустой процесс, можно ведь закинуть в него определенную книгу, о потом по ней ориентироваться. Буду пробовать. :D

Eugie » 01 фев 2006, 14:14

См. Additional Notes по ссылке http://support.microsoft.com/default.as ... -us;316126

Список запущенных экземпляров COM-серверов.

Hide » 31 янв 2006, 07:33

Задача такая: Необходимо получить доступ поочередно к каждому из запущенных от имени пользователя ASPNET, экземпляров COM-сервера, а именно EXCEL. Пробую так(C#):
using SRIS = System.Runtime.InteropServices;

[SRIS.DllImport("ole32.dll")]
public static extern int CreateBindCtx(int reserved,out SRIS.UCOMIBindCtx bctx);
public SRIS.UCOMIRunningObjectTable ROT;
public SRIS.UCOMIBindCtx ctx;
public SRIS.UCOMIEnumMoniker EnMon;
SRIS.UCOMIMoniker[] pMon = new SRIS.UCOMIMoniker[10];
ArrayList RunnExcels = new ArrayList();

private void GetRunningExcels()
{
object oExcel = new object();
CreateBindCtx(0,out ctx);
ctx.GetRunningObjectTable(out ROT);
ROT.EnumRunning(out EnMon);
EnMon.Reset();
int pceltFetched=0;
string str="";
Monikers.Clear();
while (EnMon.Next(1,pMon,out pceltFetched) == 0x0)
{
pMon[0].GetDisplayName(ctx,pMon[0],out str);
if (str=="!{00024500-0000-0000-C000-000000000046}")
{
ROT.GetObject(pMon[0], out oExcel);
RunnExcels.Add(oExcel);
}
}
}

Ожидаю получить коллекцию объектов, соответствующую запущенным экземплярам, на деле колличество элементов коллекции совпадает с количеством реально запущенных экземпляров,но фактически все объекты ссылаются на один и тот же экземпляр. Подскажите, кто сталкивался с такой задачей.

Вернуться к началу