Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > хэндл заблокированой кнопки


Автор: Sunvas 25.3.2006, 19:21
Как узнать хэндл заблокированной кнопки (не моего приложения).
Стандартная функция WindowFromPoint для этого не подходит.

Автор: Ciber SLasH 25.3.2006, 21:20
Цитата(Sunvas @ 25.3.2006, 19:21 Найти цитируемый пост)
Как узнать хэндл заблокированной кнопки

1) Ищим форму приложения
2) продолжаем искать, но только дочерние окна
3) проверяем стиль кнопки, если есть стиль WS_DISABLED, то кнопка заблокирована
Примерно так:
Код

var
  ParentWnd,Wnd: HWND;
  Buff: PChar;
begin
  GetMem(Buff, 255);
  ParentWnd := FindWindow(nil, 'MyForm');
  Wnd := FindWindowEx(ParentWnd, 0, nil,nil);
  while Wnd <> 0 do
  begin
    GetClassName(Wnd, Buff, 255);
    Style = GetWindowLong(Wnd, GWL_STYLE);
    if (Pos('Button', Buff) > 0) and ((Style and WS_DISABLED) = WS_DISABLED) then
      SendMessage(Wnd, WM_ENABLED, 1,0);
    Wnd := FindWindowEx(ParentWnd, Wnd, nil,nil)
  end;
  FreeMem(Buff, 255)
end;

Автор: Sunvas 26.3.2006, 01:29
Спасибо Ciber SLasH!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)