AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL Fenster als Frame in Anwendung einbinden?

Offene Frage von "winx"
Ein Thema von winx · begonnen am 30. Dez 2006 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#1

DLL Fenster als Frame in Anwendung einbinden?

  Alt 30. Dez 2006, 09:19
Guten Morgen,

ich habe folgendes Problem und hoffe ihr könnt mir mal wieder helfen

Ich habe ein meine Hauptanwendung(In Delphi Win32), das eine DLL (auch Delphi Win32) aufrufen soll.
Nun soll diese DLL ein Fenster öffnen.
Bis jetzt hat die DLL es einfach im Vordergrund (vor die Hauptanwendung) aufpoppen lassen.

Nun möchte ich dies jedoch ändern, Das Fenster der DLL soll nicht mehr einfach mit ShowDialog()
aufpoppen, sondern nur noch bei Aufruf in einem Unterfenster (also praktisch einem Frame)
der Hauptanwendung erscheinen.

Ist das möglich, und wenn ja: wie ist dies möglich?

Danke,
winx

ps: habs auch mal hier gepostet, da es echt dringend ist


klick
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: DLL Fenster als Frame in Anwendung einbinden?

  Alt 30. Dez 2006, 15:35
Das Thema "Ein Form / Frame aus einer DLL in die Hauptanwendung einbetten" gab es hier schon ganz oft.

Hier mal ein Link zu einem Thread, in dem ich damals ein kleines "Spielprojekt" angehängt habe.
http://www.delphipraxis.net/internal...light=dll+form

Such mal im Forum nach den Vor-und Nachteilen von "Forms aus DLL's" gegenüber "Forms aus Packages" bevor du dich endgültig auf DLL's festlegst.


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#3

Re: DLL Fenster als Frame in Anwendung einbinden?

  Alt 30. Dez 2006, 16:58
habs mal runtergeladen. beim versuch das programm zu starten bekomme ich lauter zugriffsverletzungen...
woran kann das liegen?
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: DLL Fenster als Frame in Anwendung einbinden?

  Alt 30. Dez 2006, 17:28
Zitat von winx:
habs mal runtergeladen. beim versuch das programm zu starten bekomme ich lauter zugriffsverletzungen...
woran kann das liegen?
Das ist eingentlich ein ganz einfaches Progrämmchen ohne viel Schnickschnack, das überall laufen sollte.
Ich habe es grade noch einmal unter Windows 2000, XP Pro und Vista Ultimate getestet und es lief überall einwandfrei.

Lade es einfach noch einmal runter und entpacke es neu.
Eventuell macht dein Dekomprimierungsprogramm auch BitGrütze aus den Files. Hast du eventuell ein alternatives Programm um ZIP Archive zu entpacken ?

Eine bessere Lösung habe ich leider nicht.

Falls es dann immernoch micht läuft, dann mach mal bitte Screenshots, damit ich die Fehleradressen mit dem Debugger vergleichen kann.
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#5

Re: DLL Fenster als Frame in Anwendung einbinden?

  Alt 30. Dez 2006, 18:06
hab ich und jetzt klappt es. nur wenn ich es in D2006 importiere funktioniert es nicht...warum auch immer
  Mit Zitat antworten Zitat
winx

Registriert seit: 14. Jun 2005
265 Beiträge
 
#6

Re: DLL Fenster als Frame in Anwendung einbinden?

  Alt 30. Dez 2006, 19:18
hab es mal mit d2006 gedebuggt und der fehler passiert an dieser stelle:

Delphi-Quellcode:

 Application:=aApplication;
 if not Assigned(DllForm) then
     DllForm:=TfrmDllPlugin.Createparented(aPanel.handle); <============ hier passierts
ich bekomme eine Zugriffsveletzung

EurekaLog 5.1.3

Application:
-------------------------------------------------------
1.1 Start Date : Sat, 30 Dec 2006 19:17:09 +0100
1.2 Name/Description: BitteScrolle.exe
1.3 Version Number : 0.0.0.1
1.4 Parameters :
1.5 Compilation Date: Sat, 6 May 2006 10:48:12 +0100

Exception:
-----------------------------------------------------------------------------------
2.1 Date : Sat, 30 Dec 2006 19:17:12 +0100
2.2 Address:
2.3 Module : BitteScrolle.exe
2.4 Type : EAccessViolation
2.5 Message: Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000.

Active Controls:
------------------------------------
3.1 Form Class : TfrmMain
3.2 Form Text : frmMain
3.3 Control Class: TButton
3.4 Control Text : Load "DLL-Form"

Computer:
------------------------------------------------------------


Operating System:
------------------------------------
5.1 Type : Microsoft Windows XP
5.2 Build # : 2600
5.3 Update : Service Pack 2
5.4 Language: German

Network:


Call Stack Information:
------------------------------------------------------------------------------------------------------
|Address |Module |Unit |Class |Procedure/Method |Line|
------------------------------------------------------------------------------------------------------
| Exception Thread: ID=284; Priority=0; Class=; [Main] |
|----------------------------------------------------------------------------------------------------|
|00474C79|BitteScrolle.exe |Controls.pas |TWinControl |CreateParams |5958|
|7C9110ED|ntdll.dll | | |RtlLeaveCriticalSection | |
|00474C14|BitteScrolle.exe |Controls.pas |TWinControl |CreateParams |5946|
|00489721|BitteScrolle.exe |Forms.pas |TScrollingWinControl|CreateParams |2081|
|0048971C|BitteScrolle.exe |Forms.pas |TScrollingWinControl|CreateParams |2080|
|0048C27C|BitteScrolle.exe |Forms.pas |TCustomForm |CreateParams |3600|
|00CD7D3B|BitteScrolleDll.dll| | |ShowDllForm | |
|004934AC|BitteScrolle.exe |main.pas |TfrmMain |LoadDllPlugin |89 |
|00493410|BitteScrolle.exe |main.pas |TfrmMain |LoadDllPlugin |76 |
|00493793|BitteScrolle.exe |main.pas |TfrmMain |btnLoadDllFormClick |161 |
|00472AEC|BitteScrolle.exe |Controls.pas |TControl |Click |4705|
|00472A88|BitteScrolle.exe |Controls.pas |TControl |Click |4696|
|00468FF4|BitteScrolle.exe |StdCtrls.pas |TButton |Click |3472|
|004690E8|BitteScrolle.exe |StdCtrls.pas |TButton |CNCommand |3524|
|0047294C|BitteScrolle.exe |Controls.pas |TControl |WndProc |4645|
|77D1BFFB|user32.dll | | |NotifyWinEvent | |
|77D1BFF3|user32.dll | | |NotifyWinEvent | |
|7C91F1CB|ntdll.dll | | |RtlMultiByteToUnicodeN | |
|7C91F0A5|ntdll.dll | | |RtlAnsiStringToUnicodeString| |
|7C91D9BF|ntdll.dll | | |NtFindAtom | |
|004727C4|BitteScrolle.exe |Controls.pas |TControl |WndProc |4592|
|004758F3|BitteScrolle.exe |Controls.pas |TWinControl |WndProc |6342|
|0047579C|BitteScrolle.exe |Controls.pas |TWinControl |WndProc |6309|
|00468EB8|BitteScrolle.exe |StdCtrls.pas |TButtonControl |WndProc |3414|
|0047271C|BitteScrolle.exe |Controls.pas |TControl |Perform |4552|
|004726F8|BitteScrolle.exe |Controls.pas |TControl |Perform |4547|
|00475A2B|BitteScrolle.exe |Controls.pas | |DoControlMsg |6388|
|00475A08|BitteScrolle.exe |Controls.pas | |DoControlMsg |6382|
|00476083|BitteScrolle.exe |Controls.pas |TWinControl |WMCommand |6574|
|00476078|BitteScrolle.exe |Controls.pas |TWinControl |WMCommand |6573|
|0048D2D8|BitteScrolle.exe |Forms.pas |TCustomForm |WMCommand |4116|
|77D1E8EA|user32.dll | | |CallWindowProcA | |
|004759D7|BitteScrolle.exe |Controls.pas |TWinControl |DefaultHandler |6369|
|0047294C|BitteScrolle.exe |Controls.pas |TControl |WndProc |4645|
|77D1BD41|user32.dll | | |PtInRect | |
|004727C4|BitteScrolle.exe |Controls.pas |TControl |WndProc |4592|
|004758F3|BitteScrolle.exe |Controls.pas |TWinControl |WndProc |6342|
|00454040|BitteScrolle.exe |Graphics.pas | |FreeMemoryContexts |4670|
|0047579C|BitteScrolle.exe |Controls.pas |TWinControl |WndProc |6309|
|0048B329|BitteScrolle.exe |Forms.pas |TCustomForm |WndProc |3098|
|00475570|BitteScrolle.exe |Controls.pas |TWinControl |MainWndProc |6237|
|77D1B8BA|user32.dll | | |SendMessageW | |
|77D1E900|user32.dll | | |CallWindowProcA | |
|77D1E8EA|user32.dll | | |CallWindowProcA | |
|004759D7|BitteScrolle.exe |Controls.pas |TWinControl |DefaultHandler |6369|
|00472EF4|BitteScrolle.exe |Controls.pas |TControl |WMLButtonUp |4836|
|0047294C|BitteScrolle.exe |Controls.pas |TControl |WndProc |4645|
|7C8025EB|kernel32.dll | | |WaitForSingleObjectEx | |
|7C802540|kernel32.dll | | |WaitForSingleObjectEx | |
|7C80252D|kernel32.dll | | |WaitForSingleObject | |
|7C91E2EF|ntdll.dll | | |ZwReleaseMutant | |
|7C8024B1|kernel32.dll | | |ReleaseMutex | |
|00475825|BitteScrolle.exe |Controls.pas |TWinControl |WndProc |6320|
|77D21109|user32.dll | | |PostThreadMessageW | |
|004727C4|BitteScrolle.exe |Controls.pas |TControl |WndProc |4592|
|004758F3|BitteScrolle.exe |Controls.pas |TWinControl |WndProc |6342|
|7C9110ED|ntdll.dll | | |RtlLeaveCriticalSection | |
|00454040|BitteScrolle.exe |Graphics.pas | |FreeMemoryContexts |4670|
|00475570|BitteScrolle.exe |Controls.pas |TWinControl |MainWndProc |6237|
|00453FA8|BitteScrolle.exe |Graphics.pas | |FreeMemoryContexts |4658|
|00475585|BitteScrolle.exe |Controls.pas |TWinControl |MainWndProc |6240|
|77D194DA|user32.dll | | |GetCapture | |
|0047571B|BitteScrolle.exe |Controls.pas |TWinControl |IsControlMouseMsg |6287|
|77D1EB39|user32.dll | | |CallNextHookEx | |
|004727C4|BitteScrolle.exe |Controls.pas |TControl |WndProc |4592|
|004758F3|BitteScrolle.exe |Controls.pas |TWinControl |WndProc |6342|
|0047579C|BitteScrolle.exe |Controls.pas |TWinControl |WndProc |6309|
|00468EB8|BitteScrolle.exe |StdCtrls.pas |TButtonControl |WndProc |3414|
|00475570|BitteScrolle.exe |Controls.pas |TWinControl |MainWndProc |6237|
|77D196C2|user32.dll | | |DispatchMessageA | |
|77D196B8|user32.dll | | |DispatchMessageA | |
|00491683|BitteScrolle.exe |Forms.pas |TApplication |ProcessMessage |6873|
|00491600|BitteScrolle.exe |Forms.pas |TApplication |ProcessMessage |6860|
|004916BA|BitteScrolle.exe |Forms.pas |TApplication |HandleMessage |6892|
|004916B0|BitteScrolle.exe |Forms.pas |TApplication |HandleMessage |6891|
|004918EA|BitteScrolle.exe |Forms.pas |TApplication |Run |6976|
|00491854|BitteScrolle.exe |Forms.pas |TApplication |Run |6960|
|00493A9F|BitteScrolle.exe |BitteScrolle.dpr| | |14 |
|7C91E64C|ntdll.dll | | |NtSetInformationThread | |
------------------------------------------------------------------------------------------------------

|
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Registers:
-----------------------------
EAX: 009ED020 EDI: 009ED020
EBX: 00493138 ESI: 009ED020
ECX: 00000000 ESP: 0012F480
EDX: 00493138 EIP: 00000000

Stack: Memory Dump:
------------------ ---------------------------------------------------------------------------


haste ne ahnung woran das liegen könnte???

danke
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#7

Re: DLL Fenster als Frame in Anwendung einbinden?

  Alt 30. Dez 2006, 20:32
Der Fehler scheint in dem DLL Projekt zu stecken.

Wie auch immer ...
ich habe das Projekt eben schnell mit meiner 2006er Explorer Edition importiert und noch mal neu vervackt.
Die beiden Projekte (DLL und Echse) lassen sich fehlerfrei kompillieren und laufen dann auch ...
Angehängte Dateien
Dateityp: zip scrollbars_und_createparented_172.zip (796,9 KB, 18x aufgerufen)
  Mit Zitat antworten Zitat
Arthur Hoornweg

Registriert seit: 20. Dez 2005
17 Beiträge
 
Delphi 2007 Professional
 
#8

Re: DLL Fenster als Frame in Anwendung einbinden?

  Alt 22. Jan 2007, 10:00
Das Problem ist m.E. dass die Anwendung sein "tApplication" Objekt an die DLL übergibt.

Das funktioniert nur dann einwandfrei, wenn sowohl die Anwendung als auch die DLL mit Packages (RTL, VCL) kompiliert wurden.

Wenn man die beiden Module ohne Packages kompiliert, wird der Linker sowohl in der DLL als auch in der Anwendung alle unbenutzten Prozeduren und Methoden entfernen um die Dateigröße zu minimieren. Das Speicherlayout (Adressenoffset der Methoden) von dem "tApplication" Objekt ist dann möglicherweise nicht mehr identisch in den beiden Modulen - es kommt dann zum Crash. Vermeiden kann man dies nur, wenn man beide Module mit Packages kompiliert. Das "VCL" Package enthält immer das komplette Tapplication Objekt.
Arthur Hoornweg
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:40 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