В настоящее время я автоматизирую приложение на работе с помощью COM, и у меня возникла проблема, когда у любого, кто использует мое приложение, возникает проблема, если исходное приложение уже открыто при запуске моего приложения. Я знаю, как найти процесс, если он открыт, но вместо того, чтобы беспокоиться о его закрытии, или обойти его и т. Д., Я хочу попробовать использовать существующее приложение вместо открытия нового.
Вот как я обычно запускаю приложение в моей программе автоматизации:
Designer.Application desApp = new Designer.Application();
Теперь я пытаюсь использовать дескриптор из существующего приложения:
Designer.Application desApp = (Designer.Application)((System.Diagnostics.Process.GetProcessesByName("Designer.exe")[0]).Handle)
(я знаю, что это не работает, поскольку .Handle
возвращает IntPtr
, но я использую его в качестве примера.)
Есть ли способ сделать это? Как вернуть работающий объект, если я знаю дескриптор / процесс?