Moin,
was hast du eigentlich vor?
Windows mal eben neuschreiben?
vielleicht hilft dir das hier ja weiter...
Delphi-Quellcode:
type
PMyEnumParam = ^TMyEnumParam;
TMyEnumParam = record
lb: TListbox;
end;
:
:
implementation
uses TlHelp32, ShellApi;
function GetWindows(const hWnd : Longword; Param: PMyEnumParam): LongBool; stdcall;
var
Len : Longint;
S : String;
begin
Result := True;
if not ( IsWindow(hWnd) and IsWindowVisible(hWnd) ) then Exit;
Len := SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0);
if Len > 0 then
begin
SetLength(S, Len);
SendMessage(hWnd, WM_GETTEXT, Len + 1, Longint(Pchar(S)));
Param.lb.Items.Add(s);
end;
end;
procedure TForm.ButtonClick(Sender: TObject);
var Param: TMyEnumParam;
begin
ListBox.Clear;
Param.lb := Listbox;
EnumWindows(@GetWindows, LPARAM(@Param));
end;
das ist zwar nicht 100% das was du gefragt hast.
Aber die
Unit: TlHelp32 solltest du dir mal genauer anschauen, mit ihr kannst du vielleicht diese Dinge realisieren, die du vorhast.
Das ist ziemlich systemnah und deshalb nicht gerade das, was man ständig braucht.
Und zu deiner Frage mit den zuletzt gestarteten Programmen, das steht in der Registry. Leider ist das aber nicht ganz zu einfach, weil dort nur steht, was so alles aufgerufen wurde. Die statitische Auswertung darüber, was angezeigt wird musst du scheinbar selber übernehmen.
Na dann, viel Spass...
MfG
Thorsten