Тема: Как получить HWND AutoCAD в Delphi?

Как получить HWND акада в delphi ?

Re: Как получить HWND AutoCAD в 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.

Re: Как получить HWND AutoCAD в Delphi?

Здесь используются глобальные acCAPT, acadApp — так надо было.
А тип они какой имеют ?

Re: Как получить HWND AutoCAD в Delphi?

Разобрался с типами

Re: Как получить HWND AutoCAD в Delphi?

Работаю в 2002 акаде.
На  acCAPT:=acadApp.Caption;
выдает ошибку !

Re: Как получить HWND AutoCAD в Delphi?

> Alexander Larionov
>На acCAPT:=acadApp.Caption;
>выдает ошибку
Ну, это же просто строка. У нас она была вообще не "AutoCAD". В том и ненадежность поиска HWND через заголовки, потому что они меняются. Понаблюдайте, как меняется при открытом файле, при развернутых и свернутых строках.
Лучше искать AutoCAD как COM-сервер, брать объект Application, у него есть свойство HWND.

Re: Как получить HWND AutoCAD в Delphi?

AcadApp.Application. xxx
Нет у него свойства hwnd
Есть у ActiveDocument
А нужен хендл для основного окна, при чем даже если документ (ы) заняты (например при 3d orbit).
Ваша функция при небольшой подкрутке работает нормально, если AutoCAD не занят, а мне надо, чтобы при любых обстоятельства определялся hwnd

Re: Как получить HWND AutoCAD в Delphi?

> Alexander Larionov
Когда AutoCAD "занят" от него получить ничего невозможно.
Вариант получения hwnd AutoCAD - использовать ARX.

Re: Как получить HWND AutoCAD в Delphi?

> callisto
Задача решена даже при занятом акаде - см.
https://www.caduser.ru/forum/topic26928.html