Здравствуйте, MishaVBA, Вы писали:
Б>>Как из пути к exe-шнику извлечь "GUID верхнего окна AutoCAD" — дело твоё.
MVB>Мне сказали, что функция EnumWindows возвращает Handle, а как получить через Handle -> GUID приложения, в итоге мне надо получить путь к библиотеке этого приложения через LIBID этого приложения, но самое главное сейчас надо научиться получать GUID через Handle приложения. Как это сделать?
Я предлагаю другой путь: идти от известных GUIDов к окнам и хендлам. (У меня, правда, нет АвтоКАДа, поэтому путь может корректироваться с учетом реалий)
1. Для всех тебе известных версий АвтоКАДа ты знаешь его GUIDы, вернее, его ProgIDы, в виде "AutoCAD.Application.nnn" и "AutoCAD.Application" для самой последней версии.
2. Для любого известного ProgIDа можно получить запущенный экземпляр его приложения через
Dim app As Object
Set app = GetObject(,"AutoCAD.Application.nnn") ' и "AutoCAD.Application" соответственно
3. У этого приложения можно перебрать все его активные окна (как — не знаю) и сравнить с тем, которое тебя интересует.
4. У интересующего приложения через объект можно получить его библиотеку типов. Один из способов — использовать TLBINF32.DLL (TypeLib Information).
Dim ta As TLI.TLIApplication, tlinfo As TLI.TypeLibInfo
Set ta = New TLI.TLIApplication
Set tlinfo = ta.ClassInfoFromObject(app).Parent
5. Использовать эту библиотеку типов для своих целей.