Huhu,
ich weiß nicht ob ichs ins richtige Forum packe.. zur Not bitte verschieben.
Also, momentan werkel ich an einem Projekt, das die Shell ersetzt. Zu erklären warum, würde zu lange dauern.
Ich habe also ein Formular, das ich in Vollbild als Desktop hinter alles lege. Soweit passt es auch. Über diese Oberfläche, kann ich verschiedene andere Programme starten.
Problem ist jetzt erstmal, das, wenn ich das Formular anklicke, es sich über die anderen gestarteten Programme setzt.
Das ist soweit aber nicht schlimm, weil ich eh eine art "TaskLeiste" einbauen wollte bzw. schon hab.
Die funktioniert soweit. Es ist eine ToolBar, die per ToolBarButton die geöffneten Programme anzeigt. Generiert wird das dann dynamisch. Jetzt fehlt einzig die Funktion, wie ich die Fenster durch klick auf den ToolbarButton in den Vordergrund bekomme.
Mit folgendem Code fülle ich die "TaskLeiste":
Delphi-Quellcode:
function TaskToBar(t: String; pid: String): string;
var
TB: TDSToolButton;
i: integer;
Event: TNotifyEvent;
begin
TB := TDSToolButton.Create(form1);
TB.Parent := form1.Frame21.DSToolBar1;
TB.Width := 35; // wirkt sich nicht aus
TB.Height := 35; // ???
//TB.AutoSize := False;
TB.Caption := IntToStr(i);
TB.ShowHint := True;
TB.Hint := pid;
tb.Caption := t;
TB.ShowText := true;
tb.PopupSide := popLeft;
tb.OnClick := form1.TaskClick;
end;
Die Funktion wird aus einem normalen EnumWindowsProc aufgerufen. "t" ist dabei der Titel der Anwendung:GetText(Wnd)
und pid (so hoffe ich) die ProzessID: IntToStr(Wnd)
Die ProzessID schreibe ich, vorrübergehend, als String in den Hint, damit ich sie übergeben kann. TaskClick sieht so aus:
Delphi-Quellcode:
procedure TForm1.TaskClick(sender : TObject);
var id:String;
fenster: Hwnd;
begin
id := TDSToolButton(sender).Hint;
end;
Die Frage ist jetzt.. wie bekomme ich aus diesem ID String wieder einen WindowHandel, so das ich damit arbeiten kann? Und das möglichst unkompliziert ? Also nicht indem ich nochmal per EnumWindow alles durchgehen muss?
Falls jemand helfen kann, danke ich schonmal im Vorraus. Ich hoffe ich hab gut beschrieben worum es mir geht.
Gruß,
Andreas