exe шник не подключается к инвентору

Автор Тема: exe шник не подключается к инвентору  (Прочитано 6371 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн filat

  • ADN Club
  • ****
  • Сообщений: 262
  • Карма: 2
Re: exe шник не подключается к инвентору
« Ответ #15 : 17-01-2022, 10:53:05 »
Попробуй такое обращение:
Код - vb.net [Выбрать]
  1. Dim m_inventorApp As Inventor.Application = Nothing
  2. Try ' попытка найти активный сеанс Inventor
  3. m_inventorApp = System.Runtime.InteropServices .Marshal.GetActiveObject("Inventor.Application")
  4. Catch ex As Exception
  5. End Try
  6. If m_inventorApp Is Nothing Then
  7. 'Сеанс не найден
  8. End If
  9.  

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: exe шник не подключается к инвентору
« Ответ #16 : 28-04-2022, 00:18:57 »
Всем привет. Не уверен, о той ли проблеме идет речь, так что извиняюсь, если выйдет оффтопик.
В общем бывает такая штука, когда используешь код, что приведу ниже: то работает нормально, а то бывает Marshal.GetActiveObject("Inventor.Application") перестает находить запущенное приложение, вылетает исключение внутри try - catch и создается новый экземпляр приложения.

Лечится тем, что надо запускать инвентор от имени администратора, "ПКМ на ярлык => Свойства => Вкладка 'Ярлык' => Дополнительно => Запуск от имени администратора".
По вашему описанию, что на всех машинах кроме вашей работает, вполне похоже.

Код - C# [Выбрать]
  1. using Inventor;
  2. using System;
  3.  
  4. namespace RIChernov.Launcher
  5. {
  6.     public class Launcher
  7.     {
  8.         public Application GetActiveApplicationOrLaunch()
  9.         {
  10.             Application app = GetActiveApplicationOrNull();
  11.             if (app == null)
  12.             {
  13.                 try
  14.                 {
  15.                     app = Activator.CreateInstance(Type.GetTypeFromProgID
  16.                         (_progID)) as Inventor.Application;
  17.                     app.Visible = true;
  18.                 }
  19.                 catch
  20.                 {
  21.                     throw new Exception("Error: couldn't create Inventor instance");
  22.                 }
  23.             }
  24.             return app;
  25.         }
  26.         public Application GetActiveApplicationOrNull()
  27.         {
  28.             Application app = null;
  29.             try
  30.             {
  31.                 /*
  32.                     чтобы тут работало нормально,
  33.                     надо запускать инвентор от имени администратора
  34.                 */
  35.                 app = System.Runtime.InteropServices.Marshal
  36.                         .GetActiveObject(_progID) as Inventor.Application;
  37.             }
  38.             catch { }
  39.             return app;
  40.         }
  41.         private string _progID = "Inventor.Application";
  42.     }
  43. }

« Последнее редактирование: 28-04-2022, 02:16:54 от R.I.Chernov »
В программировании я новичок...но ненадолго! ;)