AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Fremdes Fenster in Vordergrund holen

Fremdes Fenster in Vordergrund holen

Ein Thema von Sanguis · begonnen am 15. Feb 2007 · letzter Beitrag vom 16. Feb 2007
 
Sanguis

Registriert seit: 20. Jul 2005
Ort: Essen
146 Beiträge
 
#1

Fremdes Fenster in Vordergrund holen

  Alt 15. Feb 2007, 13:21
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
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz