AGB  ·  Datenschutz  ·  Impressum  







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

Hostanwendung mit Plugins

Ein Thema von dor557 · begonnen am 15. Aug 2007 · letzter Beitrag vom 18. Aug 2007
Antwort Antwort
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Hostanwendung mit Plugins

  Alt 15. Aug 2007, 20:48
Absicht : Eine anwendung schreiben die als Host andwendung dient.

Modular.

d.h. Ich möchte verschiedene abschnitte in dll's packen.

beispiel Haptprogramm : Rechnungen erstellen
zusatz als Dll. : Kundenverwaltung

Das programm soll automatisch in einem verzeichnis nach dll's suchen und nachschauen ob das ein Gültiges Plugin ist.

wenn ja in die Software integrieren. Im menü oder so.

Der Grund das die Software nicht Komplett neu geschrieben werden muss sondern einfach eine Dll schreiben die automatisch im Programm eingebunden wird. Ist meiner meinung nach Flexibel. Man kann das dann immer erweitern.


Gibt es da eine Möglichkeit ?

Wenn ja welche.

Danke Gruss Sascha
Sascha Nickel
Man muss die Dinge nehmen wie sie kommen, man kann aber auch dafür sorgen das die dinge so kommen wie man sie nehmen möchte.
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Hostanwendung mit Plugins

  Alt 15. Aug 2007, 20:57
Hi Sascha!

Für diesen Zweck ist bpl-Technologie von Borland absolut genial. (und nebenbei sind es in Wirklichkeit auch nur dll's).

Das heißt: wenn du sicherstellen kannst, das alle Module und das Hauptprogramm mit demselben Compiler erstellt werden: Nimm BPLs !!

Wir arbeiten im Moment @work auch an einem solchen Projekt. Wenn man erstmal die kleinen Hürden im Zusammenhang mit BPL's genommen hat, ist es eine wahre Freude damit zu arbeiten.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

Re: Hostanwendung mit Plugins

  Alt 15. Aug 2007, 21:16
genau das ist das Problem an der sache.

Ich kann nicht sicher stellen das es immer der Selbe Compiler ist.... Ist ein Gemeinschafts Projekt.

Teils in C Teils in Pascal Delphi...

Wenn ich ihm sagen kann was die Dll für vorraussetzungen haben muss dann kann er damit was anfangen.

Nur dazu muss ich erst wissen wie ich das machen soll. Denn ich mache die HauptSoftware !

Dennoch danke für den Tip. Kann ich evtl. bei anderen Projekten anwenden.
Gruss Sascha
Sascha Nickel
Man muss die Dinge nehmen wie sie kommen, man kann aber auch dafür sorgen das die dinge so kommen wie man sie nehmen möchte.
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Hostanwendung mit Plugins

  Alt 15. Aug 2007, 21:19
Imho kann man die BPL's auch mit dem CBuilder von Codegear erstellen. Die sollten sich mit den Delphi-BPLs vertragen.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

Re: Hostanwendung mit Plugins

  Alt 15. Aug 2007, 21:32
Ja das schon. Nur benutzt er dafür nichts von Codegear ! daher.

Gruss Sascha
Sascha Nickel
Man muss die Dinge nehmen wie sie kommen, man kann aber auch dafür sorgen das die dinge so kommen wie man sie nehmen möchte.
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#6

Re: Hostanwendung mit Plugins

  Alt 15. Aug 2007, 22:31
Auf mein Flexibles Pluginsystem verweiß
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
1234588

Registriert seit: 14. Jan 2007
Ort: Stuttgart
164 Beiträge
 
#7

Re: Hostanwendung mit Plugins

  Alt 15. Aug 2007, 22:37
ich hab mir neulich auch was einfallen lassen muessen.
zuerst such ich mir alle dll's aus einem ordner zusammen. dann suche ich mit MSDN-Library durchsuchenGetProcAddress() meine funktion xy (je nach dem wie du sie nennen moechtest) in jeder dll. ist sie vorhanden wird die addresse bzw. der funktionspointer in ein dynamisches array geschrieben. (falls die addresse nil ist, also die funktion nicht vorhanden, kann ich davon ausgehen das es kein geeignetes plugin ist).

mein array mit den addressen setze ich dann an das ende meiner fenster prozedur und uebergebe meine parameter (hwnd, msg, wparam und lparam), sodass ich mit den plugins direkt in das programm eingreifen kann. meine dll's sind, wenn man es genau nimmt, eine verlaengerung der fenster prozedur.

das ganze habe ich noch erweitert, um es dem jeweiligen plugin entwickler zu erleichtern.
ich exportiere eine zweite funktion aus dem plugin. falls diese funktion vorhanden ist, wird es wieder einem dynamischen array hinzugefuegt. was aber viel interessanter ist, die funktion gibt einen nullterminierten string zurueck, der dann spaeter einem menu item einen namen geben soll.
gleichzeitig erwartet die funktion einen wert des typs Integer, der als button id dienen soll (es wird verhindert das eine id zweimal vergeben wird, da das 'host' programm durch inkrementieren immer eine einmalige nummer zuweist).
ein beispiel:

unser programm findet die dll abc.dll, def.dll und ghi.dll. es sucht nun nach den 2 funktionen in jeder dll (in diesem beispiel hat jede dll beide funktionen).
nun wird die zweite funktion der dll's aufgerufen, es passiert folgendes:
abc.dll bekommt nun einen integer vom host programm, angenommen es waere 100.
unser host programm bekommt gleichzeitig einen namen aus der dll, 'Plugin ABC'.

auch die def.dll bekommt eine button id zugewiesen, da es bei der abc dll schon 100 ist, muessen wir inkrementieren -> 101.
unser host programm bekommt gleichzeitig einen namen aus der dll, 'Plugin DEF'.

das selbe spielchen passiert nun mit der ghi.dll. sie bekommt die nummer 103 und gibt den namen 'Plugin GHI' zurueck.

lassen wir jetzt in unserem hauptprogramm unser popupmenu anzeigen, hat es folgende eintraege:

- ABC Plugin
- DEF Plugin
- GHI Plugin

druecken wir nun die 'DEF Plugin' schaltflaeche, erhalten wir von windows die nachricht das der button mit der id 101 gedrueckt wurde. nun kommt unsere erste importierte funktion die wir aus der dll haben ins spiel. wir geben durch den callback am ende unserer fenster prozedur, die nachricht das der buton 101 gedrueckt wurde, an jede dll weiter. die entsprechende muss nur noch darauf reagieren.


allerdings ist das nur eine anregung und sehr ausbaufaehig. dennoch ist es fuer meine beduerfnisse ausreichend =)

es ist vielleicht ein wenig grob geschrieben, dennoch denke ich das es relativ verstaendlich ist.
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#8

Re: Hostanwendung mit Plugins

  Alt 16. Aug 2007, 20:49
Glaube habe da ein Problemchen.

Ich habe noch nie Bewusst mit hwnd, msg, wparam und lparam gearbeitet.

Ich glaube zu wissen das windows diese Parameter immer braucht und benutzt. Aber bisher hat Delphi das alles für mich gemacht. Ich will wohl alles

Es wäre sehr nett wenn du mir sagen könntest wie ich das verwenden kann.

Ich habe momentan nur 2 Formulare. Eine Dll erstellt in der das Formular mit Hilfe von

Delphi-Quellcode:
Form1 := Tform1.Create(application);
Form1.Show;
erstellt wird.

Aber das fenster schliesst sich automatisch ohne das ich einen button gedrückt habe.

Keine ahnung warum.

Ich war der meinung das ich dem warscheinlich keine Host-Anwendung oder Sender Form schicken kann.

Ich habe auch die etwas schwerere methode vom dll einbinden genommen.

Siehe Hier

welche möglichkeiten habe ich das ic mit den beiden Formularen Form2 in Dll1 und form0 in der Application.exe

gruss Sascha
Sascha Nickel
Man muss die Dinge nehmen wie sie kommen, man kann aber auch dafür sorgen das die dinge so kommen wie man sie nehmen möchte.
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#9

Re: Hostanwendung mit Plugins

  Alt 18. Aug 2007, 04:37
Sorry

Falsche Frage gestellt :

welche möglichkeiten habe ich das ich mit den beiden Formularen Form2 in Dll und form0 in der Application.exe zu momunizieren und daten zu übermitteln.

Mich würde das mit dem hwnd, msg, wparam und lparam sehr interresieren und in wie weit evtl. alle meine Problem lösen kann. z.b. mit hilfe von MSG was kann man da machen ??

Gruss Sascha
Sascha Nickel
Man muss die Dinge nehmen wie sie kommen, man kann aber auch dafür sorgen das die dinge so kommen wie man sie nehmen möchte.
  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 02:26 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