![]() |
Wie bringe ich meine Anwendung wieder in den Vordergrund ???
Hallo,
ich habe eine bereits bestehende Anwendung (A1) in eine DLL gewandelt um sie aus einer zweiten Anwendung (A2)heraus starten zu können. A1 erzeugt einen eigenen Thread (war ein wirklich guter Tip aus dem Forum :thumb: ). A2 nuzte ich, um A1 Parameter zu übergeben, die dann in A1 weiter bearbeitet werden. Die Parameter übergebe ich via Buttons oder Edit-Felder usw. Betätige ich jetzt einen Button in A2, geht A1 in den Hintergrund, d.h. das offene Formular von A1 verschwindet in die Task-Leiste. Jetzt möchte ich zwei neue Methoden in A1 implementieren, nämlich SHOW und HIDE, d.h ich möchte A1 auf Tastendruck in den Hintergrund bzw.Vordergrund schalten, ohne A1 zu beenden. Dazu habe ich hier im Forum auch einiges gefunden, aber nichts funktioniert. Folgene Vorgehensweise habe ich mir zurechtgelegt. Zunächst stelle ich am Ende von ThreadCreate über UsrIntThread.Thread3:=GetCurrentThreadID die ID von A1(meine Anwendung in der DLL) fest und speichere sie in einer globalen Variablen. In A2 rufe ich dann im Event eines Button SetForegroundWindow(UsrintThread.Thread3) auf. Aber A1 kommt nicht in den Vordergrund. WARUM ???? :gruebel: Ich schnalls nicht :wall: Grüße Bernd |
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Weil es heißt: SetForegroundWindow und nicht SetForegroundThread. Du musst das Handle deines Fensters angeben und nicht die ThreadID.
|
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Hallo Michael,
danke für die prompte Antwort. Selbst wenn ich mich jetzt als Looser oute :oops: , aber wie stelle ich das Handle meiner dll Anwendung fest (Habe sowas noch nie programmiert). Eventuell über Thread2 := GetWindowThreadProcessID (GetForegroundWindow)????? Bekomme ich dann meine Anwendung über SetForegroundWindow(Thread2)wieder angezeigt ??? Grüße Bernd |
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Am einfachsten über FindWindow. Setzt aber voraus, dass du den Fenstertitel kennst und dieser eindeutig ist. Oder du vergibst eine eindeutige Fensterklasse, in dem du deinem Formular einen möglichst eindeutigen Namen gibst. (Mit FindWindow kann man entweder nach fenstertitel oder Fensterklassen suchen.) Damit änderst du auch die Bezeichnung deiner Fensterklasse, die standardmäßig TForm ist. Oder anders der Formluarname bestimmt die Bezeichning der Klasse, welche wiederum den Namen der Fensterklasse bestimmt.
|
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Hallo Michael,
ok, ich habs geschnallt.SUPER.Vielen Dank :dancer2: :dancer: :hello: Grüße Bernd |
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Warum so umständlich?
Application.BringToFront bzw. Form1.BringToFront funzt auch. |
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Hallo NamenLozer,
ich denke, das funzt nicht so einfach. Damit habe ich nämlich so meine ersten Versuche gemacht: Zitat:
Zitat:
Grüße Bernd |
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Wenn das Handle deiner A1 Anwendung bekannt ist dann hiermit.
SetWindowPos A1.handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE gruß |
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Es gab hier auch mal im Forum eine Funktion "ForceForegroundWindow", der man ein Fensterhandle übergeben konnte.
Florian |
Re: Wie bringe ich meine Anwendung wieder in den Vordergrund
Zitat:
Was möchtest du nun erreichen ? Die Form bei Tastendruck anzeigen(SHOW) oder verstecken(HIDE) oder in den Vordergrund bzw.. Hintergrund setzen ? Blicke da irgendwie nicht durch. So wie ich das erkenne möchtest du die Form maximieren oder minimieren aber nicht in den Vordergrund > Hintergrund bringen. Das würde in dem Fall wenn sich die Anwendung im Tray (nicht Tasbar) befindet eh nicht gehen. Dazu muß die Anwendung sichtbar sein. EDIT: OK Task-Leiste ... Dann geht es dir ums Maximieren und Minimieren. gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 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-2025 by Thomas Breitkreuz