AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi wieso hat jede anwendung in delphi zwei handles?
Thema durchsuchen
Ansicht
Themen-Optionen

wieso hat jede anwendung in delphi zwei handles?

Ein Thema von Timi-loader · begonnen am 19. Nov 2006 · letzter Beitrag vom 15. Dez 2015
Antwort Antwort
Seite 1 von 2  1 2      
Timi-loader

Registriert seit: 10. Okt 2005
Ort: Berlin
97 Beiträge
 
Delphi 7 Personal
 
#1

wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 14:04
hallo
also mich wunderte jetzt, als ich ein programm geschrieben habe, welches alle handles auflistet, dass jedes von mir mit delphi geschriebene programm immer 2 handles hat. zum einen TApplication und zum andern beim Standard TForm1.
dieses TForm1 kann ich ja im prinzip umbenennen, indem ich einfach den namen des Form1 änder.

aber wie änder ich den den namen von TApplication? (sonst sieht ja jeder gleich: "ah mit delphi erstellt")

und wieso hat jede anwendung von delphi bei mir immer zwei handles?? (jede andere anwensung macht doch auch nur eins oder)

mfg

Timi-loader
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#2

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 14:10
Hi Timi-loader.

Zitat von Timi-loader:
also mich wunderte jetzt, als ich ein programm geschrieben habe, welches alle handles auflistet, dass jedes von mir mit delphi geschriebene programm immer 2 handles hat. zum einen TApplication und zum andern beim Standard TForm1.
Die beiden Handles sind einfach einmal das Handle zur Anwendung (engl: application), sowie das Handle zum Formular (engl: form).

Zitat von Timi-loader:
dieses TForm1 kann ich ja im prinzip umbenennen, indem ich einfach den namen des Form1 änder.
Genau. Streng genommen änderst du damit den Namen der Formularklasse TForm1 in irgendwas anderes.

Zitat von Timi-loader:
aber wie änder ich den den namen von TApplication?
Gar nicht. Die Klasse heißt TApplication und das bleibt so. Vom Rumpfuschen an der VCL und ihrem Drum-und-Dran kann ich nur abraten.

Zitat von Timi-loader:
sonst sieht ja jeder gleich: "ah mit delphi erstellt"
Ist das denn so schlimm? Es ist ja keine Schande, mit Delphi zu programmieren.

Gruß,
Waldteufel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 14:11
Für die Kommunikation mit dem Betriebssystem verwendet Delphi ein nicht sichtbares Fenster. Dieses wird durch das Applikationsobjekt erzeugt. Du müßtest also diese Überschreiben umd den handle zu ändern.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 14:49
Wenn dir das TApplication nicht gefällt dann programmiere einfach NonVCL dann sind deine Anwendungen schön klein und du kannst dich um alles selbst kümmern (also auch die Klassennamen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#5

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 14:57
Alternativ kann er auch TApplication ableiten (und nix verändern) und verwenden - dann ist das Handle halt eins auf SeinEigenerKlassenname.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 14:58
dann hat er aber das Problem das er die VCL ändern muss oder die unit Forms nicht verwenden sollte damit keine Instanz von TApplication erzeugt wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#7

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 15:05
Soweit ich weiss geht das mit einem kleinen Getrickse. Man muss nur vor dem EInbinden der Unit Forms in der Projektcode-Datei eine eigene Unit einbinden die im initialization die abgeleitet Application-Klasse erzeugt und der globalen Variable Application zuweist. Dann wird TApplication nämlich soweit ich weiss nicht nochmal erzeugt.

Ist aber schon länger her das ich mit sowas gerabeitet hab, das kann also auch schon deprecated sein. Zumal ging das mit Delphi 5.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 15:33
Zitat von Phoenix:
Soweit ich weiss geht das mit einem kleinen Getrickse. Man muss nur vor dem EInbinden der Unit Forms in der Projektcode-Datei eine eigene Unit einbinden die im initialization die abgeleitet Application-Klasse erzeugt und der globalen Variable Application zuweist.
Du hast dabei aber wohl vergessen, dass du Forms dann in dieser neuen Unit einbinden musst, um auf die Application-Variable zugreifen zukönnen, womit aber der initialization Abschnitt von Forms bzw. Controls bereits ausgeführt vor dem neuen ausgeführt wird, und somit Application bereits erzeugt ist.
Ohne VCL Code Änderung oder API Hooks wird das so nicht gehen.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#9

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 15:45
Eben nicht. Das war irgendwie der Trick an der Geschichte. Die Variable wurde vorbelegt und erst in einer später aufgeführten Unit wurde Forms includiert, so dass TApplication nicht nochmal neu erzeugt wurde. Aber das ist inzwischen knapp 6 Jahre her, ich hab echt keine Details mehr im Kopf. Muss mal gucken ob ich die alten Sourcen noch Zuhause in einem meiner zahlreichen Archive hab.

Auf jeden Fall ging das, ohne die VCL auch nur schräg anzugucken geschweige denn anzufassen.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#10

Re: wieso hat jede anwendung in delphi zwei handles?

  Alt 19. Nov 2006, 17:17
Ich dachte eben, so naiv wie ich nun mal bin, dass die Borländer einfach den ClassName der Application-Instanz als ClassName für das Fenster nehmen.
Demnach hätte das hier schon gereicht:
Delphi-Quellcode:
type
  MyApplication = class(TApplication);
  PClass = ^TClass;
begin
  PClass(Application)^ := MyApplication;

  Application.Initialize;
  ...
Als es nicht klappte, schaute ich in die dunklen Abgründe der Forms.pas (*uärks*... ) und musste feststellen, dass sie dort tatsächlich ein Stringliteral benutzen.
Es gibt also keinen hübschen, delphischen Weg. Du müsstest schon den Klassennamen über die Windows API ändern (kA wie/ob das geht), oder einfach damit leben.
Ich wüsste nicht was schlimm daran sein könnte. Delphi ist ja nicht peinlich, wie dieses komische Viech namens VB.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  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 15:03 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