получение hook запущенного arcMap

0 голосов
спросил 16 Июнь, 11 от Dido_kz1 (11,020 баллов) в категории Программные продукты Esri
привет форумчане, делаю СОМ, реализовал ICommand, СОМ запускает mxd файл(если не запущен)
как получить hook запущенного аркмапа...?
Process[] myProcesses = Process.GetProcessesByName("ArcMap");
            if (myProcesses.Length == 0)
            {
                pMxDoc = new MxDocumentClass();
                pDoc = pMxDoc as IDocument;
                app = pDoc.Parent;
                app.Visible = true;
                app.OpenDocument(path);
            }
            else
            {
                app = ?????
            }
надо что бы программно 1 раз запускался и в дальнейшем получать hook и юзать, а если до..открыто(другая карта), не обращать внимания :) потому что может быть, что юзер работает на другой карте         

4 Ответы

0 голосов
ответил 16 Июнь, 11 от TDenis (42,620 баллов)
IAppROT
0 голосов
ответил 17 Июнь, 11 от Dido_kz1 (11,020 баллов)
IAppROT

так пойдет ?
IAppROT m_appRot=new AppROT();
            if (m_appRot.Count >  0)
            {
                for (int i = 0; i <= m_appRot.Count - 1; i++)
                {

                    if (m_appRot.Item.GetType()==typeof(IMxDocument))
                    {
                        app = (IApplication)m_appRot;
                        pMxDoc = (IMxDocument)app.Document;
                    }
                }
            }
            else
            {
                pMxDoc = new MxDocumentClass();
                pDoc = pMxDoc as IDocument;
                app = pDoc.Parent;
                app.Visible = true;
                app.OpenDocument(path);
            }
0 голосов
ответил 17 Июнь, 11 от TDenis (42,620 баллов)
Если работает - то пойдёт, если нет - то нет)
Но по-моему в коде что-то не так.
0 голосов
ответил 17 Июнь, 11 от Dido_kz1 (11,020 баллов)
да, не так )))
  if (m_appRot.Item.GetType()==typeof(IMxDocument)) надо заменить на
if (m_appRot.get_Item(i) is IMxApplication)

и app = (IApplication)m_appRot на app = (IApplication)m_appRot.get_Item(i);
только вопрос: а как проверить процесс, мои ли или уже до меня запущенный. можно ли какие нить параметры передавать и проверять параметр ?

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...