Показать сообщение отдельно

  #2  
Старый 20.08.2009, 12:05
flacs
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме:
432613

Репутация: 80
По умолчанию

Переписал функцию, проверил работает.
Код:
function GetStatusTextEx(PanelIndex: cardinal): string;
  function GetWindowTextEx(Wnd: THandle): string;
  var
    __Text: array [0..$FFF] of Char;
    s: string;
  begin
    Result:='';
    if Wnd <> 0 then begin
      SendMessage(Wnd, WM_GETTEXT, $FFF, Longint(@__Text));
      Result := StrPas(__Text);
    end;
  end;
const PANEL_CLASS = 'TabWindowClass';
var wnd, nWnd, status: cardinal;
    buf: array [0..MAX_PATH-1] of char;
    num: cardinal;
begin
  Result:='';
  wnd:=FindWindow('IEFrame', nil);
  nWnd:=GetWindow(Wnd, GW_CHILD); num:=0;
  {Перечисляем детей...}
  while (nWnd<>0) do begin
      nWnd:=GetNextWindow(nWnd, GW_HWNDNEXT);
      if (nWnd=0) then break;
      GetClassName(nWnd, buf, SizeOf(buf));
      if buf = PANEL_CLASS then  begin
        status:=FindWindowEx(nWnd, 0, 'msctls_statusbar32', nil);
        if num = PanelIndex then Result:=GetWindowTextEx(status);
        inc(num);
      end;
  end;
end;
изпользовать
Label1.Caption:=GetStatusTextEx(1);

Последний раз редактировалось flacs; 20.08.2009 в 12:13..
 
Ответить с цитированием