Re[3]: Помогите получить GUID из отв. данных функции EnumWin
От: Vi2 Удмуртия http://www.adem.ru
Дата: 13.12.06 05:37
Оценка:
Здравствуйте, 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. Использовать эту библиотеку типов для своих целей.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.