![]() |
Anwendung in den vordergrund
hiho...
eigentlich ne einfache sache:
Delphi-Quellcode:
das funktioniert aba nur wenn die anwendug NICHT minimiert ist...
BringWindowToTop(wnd); //wnd is ne HWND
also
Delphi-Quellcode:
aba Problem... das funktioniert nur wenn mein Programm (beispiel Form1) selber fixiert ist... wenn beides im hintergrund ist funktioniert das nicht!
ShowWindow(wnd,SW_MAXIMIZE);
BringWindowToTop(wnd); außerdem wird die anwendung auf das maximale (is klar) gebracht.... aba die is eigentlich nur in einem fenster... also hab ich nu folgenes
Delphi-Quellcode:
jetz steh ich beim maximieren vor dem selben problem aba immerhin funktioniert das IMMER!! auch wenn alles minimiert ist...
Form1.SetFocus;
ShowWindow(wnd,SW_MAXIMIZE); BringWindowToTop(wnd); ABER^^ wenn die anwendung schon im vordergrund IST... dann maximiert sich kurz meine form und dann gehts weiter mit der eigentlichen anwendung -.- wie kann ich also erkennen, ob die anwendung scho im vordergrund ist... das ist aba nicht so einfach mit ner Boolean variable zu lösen und bool:=BringWindowToTop(wnd); oder so, denn wnd ist ein spiel, dass auch wenn es im hintergrund ist weiter aktualisiert wird deshalb erkennt der das iwie net... :wall: habt ihr eine idee? helft mir^^ vielen dank scho ma im vorraus :thumb: mfg |
Re: Anwendung in den vordergrund
Hi,
eventuell so?
Delphi-Quellcode:
if Windows.IsIconic(wnd) then//ist minimiert
ShowWindow(wnd,SW_RESTORE); if GetForegroundWindow <> wnd then BringWindowToTop(wnd); |
Re: Anwendung in den vordergrund
danke für die schnelle antwort..^^ geht aba net :wall: :wall:
also habs einfach ma eins zu eins eingefügt aba funzt noch nicht |
Re: Anwendung in den vordergrund
ist es ein fenster von Dir oder eine fremde Anwendung, was Du in den Vordergrund holen möchtest?
|
Re: Anwendung in den vordergrund
standardmäßig blinkt nur der Eintrag in der Taskleiste, wenn Du ein fremdes Fenster in den Vordergrund holen möchtest.
Über einen workarount kann man erreichen, den fremden Thread mit der eigenen Anwendung zu verknüpfen, damit gehts wieder, .. der Code unten ist von NicoDE (nur der Vollständigkeit halber) vorher SW_RESTORE aufrufen, wenn minimiert
Delphi-Quellcode:
ShowWindow(wnd,SW_RESTORE);
Delphi-Quellcode:
procedure SetForegroundWindowEx(Wnd: HWND);
var Attached: Boolean; ThreadId: DWORD; FgWindow: HWND; AttachTo: DWORD; begin Attached := False; ThreadId := GetCurrentThreadId; FgWindow := GetForegroundWindow(); AttachTo := GetWindowThreadProcessId(FgWindow, nil); if (AttachTo <> 0) and (AttachTo <> ThreadId) then if AttachThreadInput(ThreadId, AttachTo, True) then begin Attached := Windows.SetFocus(Wnd) <> 0; AttachThreadInput(ThreadId, AttachTo, False); end; if not Attached then begin SetForegroundWindow(Wnd); SetFocus(Wnd); end; end; // von setforegroundWindowEx |
Re: Anwendung in den vordergrund
gut :D hab grad iwie bei dem versuch mein pc zum absturz gebracht -.- hat aba nix mit dem code zu tun... dauert jedenfalls nochn bisl länger bei mir zumahl ich deinen code null vertstehe -.-
|
Re: Anwendung in den vordergrund
Solche Programme, die sich ungefragt in den Vordergrund drängen, hasse ich. Es reicht, wenn sie in der Taskbar blinken. Aber ich will als Benutzer selber entscheiden, ob ich ob und wann ich meine Arbeit unterbreche und mich um das Fenster kümere.
|
Re: Anwendung in den vordergrund
es geht darum, dass mein programm in dieser anwendung ständig pixel abfragen unternimmt und deshalb sollte es stets maximiert sein... aba das geschieht auf garkeinem fall ungefragt!!! der benutzer kann eine checkBox aktivier... sozusagen der afk modus)
denn wenn ein poup oder sich nur mal antivir aktualisiert würde die pixelabfrage nicht mehr funktionieren... |
Re: Anwendung in den vordergrund
Zitat:
Um nun die LoginDaten zu setzen. Muss man eben mit keybd Event arbeiten. Und da ist es zwingend erforderlich, dass die Anwendung im Vordergrund ist. Ich wollte nur mal EINEN Anwendungsfall beschreiben. Was ich schade finde, dass Du nicht antworten würdest, auch wenn Du die Antwort wüsstest, nur weil der Anwendungsfall bei Deiner Arbeit noch nicht vorgekommen ist... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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