Страница 1 из 1

Изменить свойства элемента чужого окна

Добавлено: 20 сен 2006, 21:38
Viktor Zull
Подскажите как можно изменить свойства элемента чужого окна. В частности свойства Ancros - привязки.

Первое, что я делаю - нахожу гланое окно, затем в нем нахожу нужный элемент (окно). Затем, наверно, надо использовать функцию GetWindowLong. Но свойство anchors получить мне так и не удалось.


Код: Выделить всё

Var
  Wnd,
  ChildWnd:HWND;
  E:Integer;
begin
  Wnd := FindWindowPos('Имя окна');
  if Wnd <> 0 then
    begin
      ChildWnd := FindWindowEx(Wnd,0,'LISTBOX',nil);
      if ChildWnd<>0 then
        begin
            ShowMessage('OK!');
            E := Windows.GetWindowLong(ChildWnd,?????);

        end;
    end;

Добавлено: 21 сен 2006, 02:00
Naeel Maqsudov
И не удастся. GetWindowLong оперирует понятиями WinAPI, а не VCL.
Свойства объектов VCL можно получить ТОЛЬКО средствами VCL.

Добавлено: 21 сен 2006, 13:10
Eugie
Viktor Zull, попробуй так:

Код: Выделить всё

var 
  ctrl: TWinControl;
  wnd: HWND;
begin
  ... { определили дескриптор элемента wnd }
  ctrl := FindControl(wnd); // или FindVCLWindow(pos), если известно положение элемента
  if ctrl <> nil then
    ctrl.Anchors := ...
end;

Добавлено: 21 сен 2006, 19:04
Viktor Zull
Попробовал так:

Код: Выделить всё

Wnd := FindWindowPos('Имя окна');
  if Wnd <> 0 then
    begin
      ChildWnd := FindWindowEx(Wnd,0,'LISTBOX',nil);
      if ChildWnd<>0 then
        begin
            ShowMessage('OK!');
            ctrl := FindControl(ChildWnd);
            if ctrl <> nil then
                begin
                  ShowMessage('OK!');
                  ctrl.Anchors := [akLeft,akRight];
                end;
        end;
    end;
Не получилось. Главное окно находит, дочернее тоже находит.
А FindControl(дочернее) не находит.

Что делать?

А вот в FindVCLWindow(Point(X,Y)) - X,Y - это Left и Top компонента или положение его на экране?