Тема: Как получить HWND AutoCAD в Delphi?
Как получить HWND акада в delphi ?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → Delphi → Как получить HWND AutoCAD в Delphi?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как получить HWND акада в delphi ?
Например, так:
function GetAcadHWND: HWND; function EnumCBFun(h: HWND; parm: integer): BOOL; cdecl; var wt: array[0..511] of char; begin ZeroMemory(@wt, sizeof(wt)); Result:=not (GetWindowText(h, @wt[0], ((sizeof(wt)-1) div (sizeof(char))))<>0); if not Result then Result:=not(AnsiCompareStr(wt, acCAPT)=0); if Result then acHWND:=0 else acHWND:=h; end; begin acCAPT:=acadApp.Caption; EnumWindows(@EnumCBFun, 0); Result:=acHWND; end;
Это кусочек, вырванный из контекста очень старого приложения (когда надо было искать окно Автокада по заголовку). Здесь используются глобальные acCAPT, acadApp - так надо было.
Главное - GetWindowText.
Здесь используются глобальные acCAPT, acadApp — так надо было.
А тип они какой имеют ?
Работаю в 2002 акаде.
На acCAPT:=acadApp.Caption;
выдает ошибку !
> Alexander Larionov
>На acCAPT:=acadApp.Caption;
>выдает ошибку
Ну, это же просто строка. У нас она была вообще не "AutoCAD". В том и ненадежность поиска HWND через заголовки, потому что они меняются. Понаблюдайте, как меняется при открытом файле, при развернутых и свернутых строках.
Лучше искать AutoCAD как COM-сервер, брать объект Application, у него есть свойство HWND.
AcadApp.Application. xxx
Нет у него свойства hwnd
Есть у ActiveDocument
А нужен хендл для основного окна, при чем даже если документ (ы) заняты (например при 3d orbit).
Ваша функция при небольшой подкрутке работает нормально, если AutoCAD не занят, а мне надо, чтобы при любых обстоятельства определялся hwnd
> Alexander Larionov
Когда AutoCAD "занят" от него получить ничего невозможно.
Вариант получения hwnd AutoCAD - использовать ARX.
> callisto
Задача решена даже при занятом акаде - см.
https://www.caduser.ru/forum/topic26928.html
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → Delphi → Как получить HWND AutoCAD в Delphi?
Форум работает на PunBB, при поддержке Informer Technologies, Inc