(gelöst)[WinApi] Fenster in den Vordergrund bringen

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
joggel

(gelöst)[WinApi] Fenster in den Vordergrund bringen

Beitrag von joggel »

Hallo ZFX,

ich bin hier langsam mit meinem Latein am Ende!!
Es gibt eine Anwendung (Vollbild) die stehts im Vordergrund ist.
Ich möchte jetzt aus dieser Anwendung heraus, durch Betätigen eines Buttons, eine andere Anwendung startenen und sie _vor_ diese erste Anwendung bringen.
Quasie das Fenster der zweiten Anwendung soll vor dem Fenster der ersten Anwendung positioniert werden.
Ich dachte das funktioniert einfach mit
SetWindowPos(wndH, HWND_TOPMOST, x, y, w, h, SWP_SHOWWINDOW);
Wobei wndH das Handle des zweiten Fensters ist.
Funktioniert leider nicht.
Ich habe auch mit SetForegroundWindow unc Co herumexperimentiert....ohne erfolg.

Was mich jedoch wundert ist, dass wenn diese erste Anwendung im Vollbildmodus geöffnet ist und ich durch Tastenkomination den Windowsexplorer aufrufe, er (Windowsexplorer) auch _vor_ diesem Fenster dargestellt wird...

Hat da vlt jemand eine Idee was ich tun muß?

Gruß
Zuletzt geändert von joggel am 06.09.2016, 11:27, insgesamt 1-mal geändert.
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [WinApi] Fenster in den Vordergrund bringen

Beitrag von Krishty »

Ist die Vollbildanwendung vielleicht ebenfalls TOPMOST?

Über den Explorer nicht wundern – der ist sowieso die ganze Zeit vorn damit die Task-Leiste nicht verdeckt wird. (Wird auf dem Monitor mit der Task-Leiste ein Fenster erzeugt, das den ganzen Monitor bedeckt, geht sie selbstständig aus dem Weg, ist aber nicht im Hintergrund. Siehe The Old New Thing – How do I cover the taskbar with a fullscreen window?).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
joggel

Re: [WinApi] Fenster in den Vordergrund bringen

Beitrag von joggel »

Moin Krishty,

ja, die Anwendung scheint auch TOPMOST zu sein.

Ich habe es aber *irgendwie* gerade geschafft, nachdem ich gestern alles möglich ausprobiert habe^^.

Der Code:

Code: Alles auswählen

	HWND wndH = FindWindow(NULL, _T("Fenster-Titel"));
	SetForegroundWindow(wndH);
	BringWindowToTop(wndH);
So scheint es jetzt zu funktionieren...aber ob das auch die "gängige" Lösoung ist, weiß ich nicht :)
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [WinApi] Fenster in den Vordergrund bringen

Beitrag von Krishty »

Hmm; über zwei überlappende Topmost-Fenster scheint die Fachwelt zerstritten zu sein. *Muss* die Vollbildanwendung denn Topmost sein? Wenn sie das nicht wäre, könntest du einfach den Standardweg gehen (SetForegroundWindow() ohne TOPMOST) und hättest, was du brauchst.

Mein Spiel läuft z.B. ohne Topmost im Vollbild. Das ist nur „Pseudo“-Vollbild (kein exklusiver Zugriff auf die GPU), aber mit „echtem“ Vollbild (GPU arbeitet ausschließlich für’s Vollbildfenster, mglw. in anderem Bildmodus) kannst du eh keine anderen Fenster im Vordergrund darstellen (geht wahrscheinlich nur, während Desktop Composition eingeschaltet ist, und schmeißt DXGI-Warnungen).
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
joggel

[gelöst] [WinApi] Fenster in den Vordergrund bringen

Beitrag von joggel »

Aha.
Na ich weiß wie gesagt nicht recht, in welchem modes diese Anwendung läuft und kann es auch nicht beeinflussen. Ist ja ne fremde Software. Die erlaubt einen aber da soetwas wie Scripting zu tun, und Buttons zu konfigurieren mit denen man andere Programme aufruft.

Naja, aber wenigstens funktioniert es jetzt...dank Dir trotzdem!!
Antworten