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)