AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie bringe ich meine Anwendung wieder in den Vordergrund ???
Thema durchsuchen
Ansicht
Themen-Optionen

Wie bringe ich meine Anwendung wieder in den Vordergrund ???

Ein Thema von Bemo · begonnen am 18. Okt 2006 · letzter Beitrag vom 18. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
Bemo

Registriert seit: 28. Sep 2006
11 Beiträge
 
Delphi 7 Professional
 
#1

Wie bringe ich meine Anwendung wieder in den Vordergrund ???

  Alt 18. Okt 2006, 11:38
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 ). 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 ???? Ich schnalls nicht

Grüße Bernd
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 11:46
Weil es heißt: SetForegroundWindow und nicht SetForegroundThread. Du musst das Handle deines Fensters angeben und nicht die ThreadID.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Bemo

Registriert seit: 28. Sep 2006
11 Beiträge
 
Delphi 7 Professional
 
#3

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 12:05
Hallo Michael,

danke für die prompte Antwort. Selbst wenn ich mich jetzt als Looser oute , 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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 12:12
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Bemo

Registriert seit: 28. Sep 2006
11 Beiträge
 
Delphi 7 Professional
 
#5

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 17:14
Hallo Michael,

ok, ich habs geschnallt.SUPER.Vielen Dank

Grüße Bernd
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 18:27
Warum so umständlich?

Application.BringToFront bzw. Form1.BringToFront funzt auch.
  Mit Zitat antworten Zitat
Bemo

Registriert seit: 28. Sep 2006
11 Beiträge
 
Delphi 7 Professional
 
#7

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 20:36
Hallo NamenLozer,

ich denke, das funzt nicht so einfach. Damit habe ich nämlich so meine ersten Versuche gemacht:

Zitat:
Application.BringToFront
: Das bringt nur die zur Zeit aktive Anwendung, in meinem Beispiel A2 nach oben. Die ist aber eh zu diesem Zeitpunkt wo ich auf ihr den Button betätige aktiv.
Zitat:
Form1.BringToFront
: Das würde in dem Fall auch, wenn existiert, Form1 aus der Anwendung A2 nach oben bringen. Bei diesem Beispiel müße ich auch erst den HANDLE der FORM1 meiner Anwendung A1 bestimmen. Dann sind wir wieder bei LUCKIE'S Weg

Grüße Bernd
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 22:01
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ß
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 22:35
Es gab hier auch mal im Forum eine Funktion "ForceForegroundWindow", der man ein Fensterhandle übergeben konnte.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

Re: Wie bringe ich meine Anwendung wieder in den Vordergrund

  Alt 18. Okt 2006, 23:02
Zitat:
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
Deine Frage wiederspricht sich.
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ß
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:45 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