AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendung in den vordergrund

Ein Thema von Innos · begonnen am 23. Jun 2007 · letzter Beitrag vom 25. Jun 2007
Antwort Antwort
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#1

Anwendung in den vordergrund

  Alt 23. Jun 2007, 20:51
hiho...

eigentlich ne einfache sache:
BringWindowToTop(wnd); //wnd is ne HWND das funktioniert aba nur wenn die anwendug NICHT minimiert ist...
also

Delphi-Quellcode:
ShowWindow(wnd,SW_MAXIMIZE);
BringWindowToTop(wnd);
aba Problem... das funktioniert nur wenn mein Programm (beispiel Form1) selber fixiert ist... wenn beides im hintergrund ist funktioniert das nicht!
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:
Form1.SetFocus;
ShowWindow(wnd,SW_MAXIMIZE);
BringWindowToTop(wnd);
jetz steh ich beim maximieren vor dem selben problem aba immerhin funktioniert das IMMER!! auch wenn alles minimiert ist...
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...
habt ihr eine idee?
helft mir^^ vielen dank scho ma im vorraus

mfg
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Anwendung in den vordergrund

  Alt 23. Jun 2007, 21:12
Hi,

eventuell so?
Delphi-Quellcode:
  if Windows.IsIconic(wnd) then//ist minimiert
    ShowWindow(wnd,SW_RESTORE);
  if GetForegroundWindow <> wnd then
    BringWindowToTop(wnd);
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#3

Re: Anwendung in den vordergrund

  Alt 23. Jun 2007, 21:27
danke für die schnelle antwort..^^ geht aba net

also habs einfach ma eins zu eins eingefügt aba funzt noch nicht
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#4

Re: Anwendung in den vordergrund

  Alt 23. Jun 2007, 21:42
ist es ein fenster von Dir oder eine fremde Anwendung, was Du in den Vordergrund holen möchtest?
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#5

Re: Anwendung in den vordergrund

  Alt 23. Jun 2007, 21:47
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

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
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#6

Re: Anwendung in den vordergrund

  Alt 23. Jun 2007, 22:56
gut 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 -.-
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Anwendung in den vordergrund

  Alt 24. Jun 2007, 01:35
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Innos

Registriert seit: 5. Jun 2007
142 Beiträge
 
#8

Re: Anwendung in den vordergrund

  Alt 24. Jun 2007, 09:13
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...
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#9

Re: Anwendung in den vordergrund

  Alt 25. Jun 2007, 14:20
Zitat von Luckie:
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.
es gibt aber auch Anwendungen, wo dies nötig ist. Wenn der User z.B. einen automatischen Programmstart vornehmen lassen möchte, wo auch die LoginDaten automatisch eingetragen werden. Und es zusätzlich noch eine Java Anwendung ist, und Sendmessage rausfällt, da kein kein Edit.
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...
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz