Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#7

Re: Werte aus der Statusleiste eines fremden Programms erhal

  Alt 15. Jan 2004, 19:09
Zitat:
Das wird so nicht gehen. Ein Edit oder eine Listbox kann man so auslesen aber keine Statusbar.
Hi,

Das stimmt nur bedingt.
Den ersten Panel der Statusbar kann man ohne VirtuakAllovcEx oder sonstiges auslesen.
Und zwar so:

Delphi-Quellcode:
function GetStatusBarText(wndWindow: THandle;
  StatusBarClassName: string;
  PanelIndex: Byte): string;
const
  SB_GETTEXT = $0402;
var
  WndStatusBar: THandle;
  StatusBarText: array[0..$FFF] of Char;
begin
  Result := '';
  WndStatusBar := FindWindowEx(wndWindow, 0, PChar(StatusBarClassName), nil);
  if WndStatusBar <> 0 then
  begin
    if PanelIndex = 0 then
      SendMessage(WndStatusBar, WM_GETTEXT, $FFF, Longint(@StatusBarText))
    else
      SendMessage(WndStatusBar, SB_GETTEXT, PanelIndex, Longint(@StatusBarText));
    Result := StrPas(StatusBarText);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Read statustext from Internet Explorer
  label1.Caption := GetStatusBarText(FindWindow('IEFrame', nil), 'msctls_statusbar32', 0);
end;
Man kann auch die Panels 1...n auslesen.
Dazu habe ich hier. mal ein Beispiel geschrieben (unterer Code)
Thomas
  Mit Zitat antworten Zitat