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 Wie bekomme ich das Handle meiner Anwendung ?? [ gelöst ] (https://www.delphipraxis.net/96102-wie-bekomme-ich-das-handle-meiner-anwendung-%5B-geloest-%5D.html)

Corpsman 18. Jul 2007 18:30


Wie bekomme ich das Handle meiner Anwendung ?? [ gelöst ]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi leute,

wenn ich eine VCL anwendung habe und mache

Delphi-Quellcode:
messagebox(application.handle,'as','asd',0);
Irgendwo im Code dann wird meine Anwendung komplett blockiert.

D.h. selbst wenn ich die Anwendung hinter der Messagebox sehe, so kann ich sie nicht ancklicken oder verschieben oder sonst was.

nun habe ich hier ein OpenGL Non VCL sample mit dem ich wunderbar Arbeiten kann.

Blöderweise ist da auch ne Messagebox drin. mittels

Delphi-Quellcode:
messagebox(0,'as','asd',0);
wird die Aufgerufen.

Klar wenn ich nun auf das Fenster Klciek das die Messagebox hinter dem Fenster verschwindet und ich Richtig Probleme bekomme :(.

Kann mir hier jemand sagen wie ich das handle bekomme das ich in meinem NonVCL sample übergeben mus damit ich den selben Effeckt wie bei der VCL Anwendung bekomme ?

Für alle die das nu nicht verstanden habe was ich meine, habe ich mein Sample mal hochgeladen und gleich die Messagebox reingemacht.


[edit=Matze]Im Titel "Hande" in Handle" geändert, damit man das Thema über die Suche auch leicht finden kann. MfG, Matze[/edit]l

3_of_8 18. Jul 2007 18:32

Re: Wie bekomme ich das Hande meiner Anwendung ??
 
Eine Non-VCL-Anwendung hat kein Handle. Eine VCL-Anwendung, genauer gesagt TApplication, arbeitet mit einem unsichtbaren Fenster, dessen Handle die TApplication-Instanz verwendet. Nimm einfach das Handle deiner MainForm oder so.

Corpsman 18. Jul 2007 18:38

Re: Wie bekomme ich das Hande meiner Anwendung ??
 
Das oder so ist das Problem.

ich habe eigentlich alles ausprobiert was ich so finden konnte, und man kann immer die Messagebox hinter dem Fenster Verstecken.

Deswegen hab ich ja den Source hochgeladen, da könnt ihr "ausprobieren" ob eure idee geht.

ErazerZ 18. Jul 2007 18:39

Re: Wie bekomme ich das Hande meiner Anwendung ??
 
MessageBox(h_Wnd, ....);

Corpsman 18. Jul 2007 18:51

Re: Wie bekomme ich das Handle meiner Anwendung ??
 
Shit,

im Sample gehts so tatsächlich.

Wenn ich das selbe aber in Balanced mache klappt es nicht.

Obwohl ich da den Exakt selben Code habe.

Gibts noch ne Möglichkeit von nem Fenster sich das Handle geben zu lassen ?

also das ich versuche das Handle von meinem Balanced zu bekommen und dann das zu nehmen...

Relicted 18. Jul 2007 19:38

Re: Wie bekomme ich das Handle meiner Anwendung ??
 
kann dein sample leider ned kompilieren...

Delphi-Quellcode:
var
  FWindowHandle : HWND;
//....
  FWindowHandle := Classes.AllocateHWnd(WndProc);
  messagebox(FWindowHandle,'as','asd',0);
klappt das vielleicht?

Corpsman 18. Jul 2007 20:53

Re: Wie bekomme ich das Handle meiner Anwendung ??
 
hmm

kann ich auch nicht Testen mein D5 kennt

AllocateHWnd

net.

Aber ich hab immerhin schon mal Rausgefunden das es generell zu gehn schein.

wenn ich diese Messagebox von wo anders aus aufrufe gehts.

Meine MessageBox wird von der Create einer anderen Subklasse Aufgerufen.

Ich versuch nu mal die Nachrichten wie wild hin und her zu schicken vielleicht klappts ja dann ;).

Relicted 18. Jul 2007 20:56

Re: Wie bekomme ich das Handle meiner Anwendung ??
 
schau mal in der hilfe vielleicht liegts ned in classes sondern woanders...

Corpsman 18. Jul 2007 21:05

Re: Wie bekomme ich das Handle meiner Anwendung ??
 
Also ich habs nu Teilweise hinbekommen.

Wenn die Messagebox kommt solange ich noch nie das Fenster anzeigen lassen habe gehts net, sobalt aber das 1. Mal via OpenGL gerendert wurde gehts.

nu mus ich ebend mit all meinen Fehlermeldungen warten bis das 1. Frame Rum ist dann gehts ;).

Aber woran das wohl liegt ...

turboPASCAL 19. Jul 2007 07:32

Re: Wie bekomme ich das Handle meiner Anwendung ??
 
Schon einmal
Delphi-Quellcode:
MessageBox(h_Wnd, , '', MB_SETFOREGROUND or MB_TOPMOST or MB_OK);
versucht ? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 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