Announcement

Collapse
No announcement yet.

ActiveX und TApplication.Handle

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ActiveX und TApplication.Handle

    Hallo! <br>
    <br>
    Ich habe eine bestehende Anwendung (Delphi 5) in ein OCX umgewandelt um es im WebBrowser laufen zu lassen.<br>
    Soweit funktioniert alles. Allerdings habe ich ein Problem: <br>
    mein Programm benutzt "Application.Handle", ich erhalte aber kein gültiges Handle mehr, sondern immer "0" (Null)! <br>
    Hat jemand einen Tip? <br>
    Gruss <br>
    Terry

  • #2
    Hallo,

    wozu wird Application.Handle verwendet

    Comment


    • #3
      Hallo Herr Kosch! <br>
      <br>
      Ich muss (leider) eine Funktion aus einer Fremdkomponente/DLL einsetzen. Diese Funktion brauch zwar eigentlich das Handle nicht, aber für die Initialisierung erwartet sie eben doch ein Handle, um evt. Nachrichten verschicken zu können. Die Initialisierung erwartet folgendes <br>
      <br>
      hWnd: Identifies the application's notification window. <br>
      <br>
      und liefert dann ein Handle zurück, welches von der eigentlichen Funktion benötigt wird. <br>
      In Ihrem alten Buch Delphi3 Lösungen steht zwar was über ActiveX, aber kein Tip, in Ihren Delphi Win32 Lösungen fehlt AxtiveX leider (aus Platzmangelwohl - verständlicher Weise) völlig. <br>
      Es wäre sehr unschön, wenn ich ein zweites Programm abspalten und über Interprozesskommunikation arbeiten müßte. Auch Application.DialogHandle führte nicht zum Erfolg.<br>
      <br>
      Gruss und Danke <br>

      Terr

      Comment


      • #4
        Hallo,

        wenn nur ein beliebiges (gültiges) Fenster-Handle benötigt wird, sollte doch das Handle des Formulars oder das Desktop-Handle (siehe Win32-API-Funktion GetDesktopWindow) ausreichen. In einem ActiveForm (DLL) gibt es kein verstecktes Hilfsfenster von TApplication, so dass auch Application.Handle nicht verwendet werden kann

        Comment


        • #5
          Hallo! <br>
          <br>
          Vielen Dank für den Tip. War eigentlich naheliegend, aber manchmal ist man schon sehr blind. Also dieser Teil funktioniert jetzt. <br>
          <br>
          Allerdings folgte sogleich das nächste problem. Mein Programm benutzt Frames, welche ich zur Laufzeit dynamisch erzeuge. Ich bekomme nun die Fehlermeldung "Element 'MeinFrame' hat kein übergeordnetes Fenster" und das Programm fliegt aus seiner Routine raus. Dabei spielt es keine Rolle, ob ich die Frames mit <br>
          <br>
          MeinFrame := TCD24Frame.Create(Self); <br>
          oder mit <br>
          MeinFrame := TCD24Frame.Create(nil); <br>
          <br>
          erzeuge.
          Sind Frames nicht möglich? <br>
          Wie kann ich so ein Programm in der Delphi IDE debuggen? <br>
          Gehen Sie in Ihrem Buch COM+/DCOM/COM auf solch Themen ein, oder kennt jemand gute Links bzw. Literatur? <br>
          <br>
          Vielen Dank!

          Comment


          • #6
            Hallo,

            das gleiche Problem tritt auf, wenn man ein von TFrame abgeleitetes OCX in eine Fremdanwendung einbindet. Dann erscheint ebenfalls die Fehlermeldung "xxx has no parent window".

            So weit klar, aber TFrame.Parent ist vom Typ TWinControl. Dass heisst, ich kann nicht ohne weiteres in der Create Methode des Frames mit GetDesktopWindow (ist vom Typ hWnd) dem Frame z. B das Desktopwindow als Parent unterjubeln.

            Ich habe es auch schon (erfolglos) mit CreateParented versucht.

            Kann ich dieses OCX (aus TFrame) nicht verwenden oder sehe ich den Wald vor lauter Bäumen nicht ???

            Würde mich über einen Hinweis freuen.

            Gruss

            Peter

            Comment

            Working...
            X