Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Fenster-Handle der eigenen Anwendung? (https://www.delphipraxis.net/50014-fenster-handle-der-eigenen-anwendung.html)

MartinKumeran 19. Jul 2005 18:02


Fenster-Handle der eigenen Anwendung?
 
Hallo,

ich experimentiere im Moment etwas mit nonvcl, benötige aber für eine Funktion das Fenster-Handle meiner Anwendung. Gibt es sowas überhaupt bei einer nicht-visuellen Anwendung? Normalerweise kann man ja einfach die Variable "Handle" übergeben (definiert in Controls.pas) und hat automatisch den richtigen Wert, aber wie funktioniert das wenn man nur die Windows und Message-Units eingebunden hat?

Viele Grüße,

Martin

Luckie 19. Jul 2005 18:07

Re: Fenster-Handle der eigenen Anwendung?
 
CreateWindowEx liefert dir doch dein fensterhandle zurück, merk es dir einfach.

BTW. das Handle, was du meinst, ist eine Eigenschaft von TForm.

MartinKumeran 19. Jul 2005 19:13

Re: Fenster-Handle der eigenen Anwendung?
 
Ja, nur ist das Problem dass ich eigentlich gar keine Form erzeugen will :cyclops:
Ich habe das Programm in VCl-Form bekommen und will probieren es probeweise in nonvcl umzuwandeln. Das VCL-Proggi arbeitet so dass man das Fenster-handle (hWnd) an eine externe Funktion übergibt (dll) die damit einen "Hook" erstellt und Messages an das Programm zurücksendet.
Das mit dem empfangen und verarbeiten der Messages übernimmt bei nonvcl ja die Nachrichtenfunktion, allerdings muss der Funktion ja irgendwie die "Adresse" des Programmes bekommes, eben der hWnd-Parameter.
Hoffentlich war das jetzt irgendwie verständlich :oops:

Olli 19. Jul 2005 19:31

Re: Fenster-Handle der eigenen Anwendung?
 
Eine Anwendung kann mehrere Fenster haben - jetzt überdenke nochmal deine Frage.

Wenn man eine VCL-Anwendung umwandelt, wird man um ein Fenster kaum herumkommen. Außerdem brauchst du irgendwie eine Message-Loop ... ob du die Nachrichten dann an ein Fenster weiterleitest ist ja deine Sache. Beispiele findest du sicher in Luckies Win32-Tuts.

Das Fensterhandle hat mit der Adresse des Programms (Instanzenhandle) nichts zu tun!

MartinKumeran 19. Jul 2005 22:04

Re: Fenster-Handle der eigenen Anwendung?
 
Hallo Olli,

mhm ok. Ich nehme mal an bei einem nonvcl-Proggi ohne erzeugte Formulare gibt es kein Fenster, oder?

Dementsprechend müsste ich den Instanzenhandle an die Funktion übergeben, allerdings erwartet sie als Parameter den Datentyp hWnd.

SirThornberry 19. Jul 2005 22:06

Re: Fenster-Handle der eigenen Anwendung?
 
wie ist es denn in dem VCL-Programm? welches Handle wird dort übergeben? Dort gibt es doch bestimmt auch ein Fenster

Olli 19. Jul 2005 22:16

Re: Fenster-Handle der eigenen Anwendung?
 
Zitat:

Zitat von SirThornberry
wie ist es denn in dem VCL-Programm? welches Handle wird dort übergeben? Dort gibt es doch bestimmt auch ein Fenster

Ich vermute mal ein Fensterhandle, da Nachrichten üblicherweise an Fenster geschickt werden.

Mit PostThreadMessage kann man es natürlich auch direkt an einen Thread schicken. Dann müßte allerdings der Code angepaßt werden. Alternativ kann man ein Dummy-Fenster versteckt erstellen. Ist ja kein Hit.

@Beide: In nonVCL gibt es garkeine Forms ... zumindest heißen sie dort nicht so, weil es eben keine VCL gibt ;)

MartinKumeran 20. Jul 2005 00:18

Re: Fenster-Handle der eigenen Anwendung?
 
@SirThornberry

Da wird einfach "Handle" übergeben. Wie Luckie geschrieben hat ist das ja ein property von TForm, gibt es bei nonvcl also leider nicht.

@Olli

Mhm, Thread-Sachen habe ich noch nie gemacht, wäre es sehr kompliziert das ganze umzubauen?

Ansonsten wäre die Lösung mit dem Dummyfenster vielleicht noch das einfachste, werde mir morgen mal ansehen was da an Minimum-Quelltext notwendig ist für etwas was man eigentlich gar nicht braucht :gruebel:

sniper_w 20. Jul 2005 00:21

Re: Fenster-Handle der eigenen Anwendung?
 
Zitat:

Wie Luckie geschrieben hat ist das ja ein property von TForm, gibt es bei nonvcl also leider nicht.
Luckie hat auch geschrieben:
Zitat:

CreateWindowEx liefert dir doch dein fensterhandle zurück, merk es dir einfach.

barf00s 20. Jul 2005 08:08

Re: Fenster-Handle der eigenen Anwendung?
 
bei vcl kram hat wohl Application.Handle das _haupt_ fenster </senf>


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr.
Seite 1 von 2  1 2      

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