PHP Forum - Coding Board
Juni 21, 2018, 11:42:39 *
Willkommen Gast. Bitte einloggen oder registrieren.

Einloggen mit Benutzername, Passwort und Sitzungslänge
News:
 
   Übersicht   Hilfe Suche Einloggen Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: Plugin-System realisieren  (Gelesen 268 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
ShockerZz
Jr. Member
**
Beiträge: 89


491984937
Profil anzeigen E-Mail
« am: April 02, 2009, 05:34:13 »

Wie könnte man ein Plugin-System realisieren? Also dass man einfach nur Dll oder so downloaded, in einen bestimmten Ordner und dann diese vom Programm genutzt werden kann.
Bisher könnte ich es mir nur so vorstellen, das in der dll eine "Standardfunktion" ist, die einfach nur die Namen der enthaltenen Funktionen enthält. Diese werden bei bestimmten Aktionen ausgelöst, z.B. bei meinem TutPad wenn der Text mit ---Funktionsname endet.
Allerdings müsste man die Dll bei dieser Möglichkeit erst später importieren können, zum Beispiel beim Start des Programmes.

Wie könnte man es sonst realisieren, bzw. wie funktioniert das bei anderen Programmen?
Gespeichert

[SIGPIC][/SIGPIC]
Teyhouse
Moderator
Biolehrer
Spender
Sr. Member
****
Beiträge: 265


294942781
Profil anzeigen E-Mail
« Antworten #1 am: April 03, 2009, 10:28:26 »

Gespeichert


CorVu5
Newbie
*
Beiträge: 32



Profil anzeigen E-Mail
« Antworten #2 am: April 03, 2009, 11:07:06 »

Es kommt immer ganz drauf an, wie du dein Pluginsystem im speziellen lösen willst.
Es stimmt natürlich, die Namen der DllFunktionen müssen dir bekannt sein, aber wenn du beispielsweise einen Packet Sniffer programmierst, könnte eine beispiel-Dll folgende Funktionen haben:
Version() : Integer; (Für Kompatibilitätschecks)
Info() : String; (Infos über das Plugin und den Autor)
Filter : TFilter (Soll festlegen für welche Art von Paketen das Plugin zuständig ist (TCP, UPD, ARP etc.)
CheckPacket(packet : pointer, Size : Integer) : TResult; (überprüft ein Paket, und liefert ein Ergebnis das in irgendeiner Form weiterverarbeitet werden kann zurück)

So könnte man beispielsweise eine Pluginfunktion realisieren.
Dlls kann man mit den APIS Loadlibrary laden und mit GetProcAdress kann man Funktionspointer erhalten
Gespeichert
Serverspy
Full Member
***
Beiträge: 115

435267721
Profil anzeigen E-Mail
« Antworten #3 am: April 03, 2009, 12:22:58 »

kann man nicht auch einfach xml dateien als Plugins laden? dann brauch ich kein eigenes Dateiformat, und verschlüsseln geht da ja auch mehr als einfach...
Gespeichert

alexj.
Full Member
***
Beiträge: 148


Profil anzeigen E-Mail
« Antworten #4 am: April 03, 2009, 12:48:39 »

Zitat von: Serverspy;18908
kann man nicht auch einfach xml dateien als Plugins laden? dann brauch ich kein eigenes Dateiformat, und verschlüsseln geht da ja auch mehr als einfach...

xml ist da um Infomationen zu speichern und nicht um funktionen aufzurufen.
Gespeichert

Bog cuva srbe

Proggihackr [Mp2k]
Newbie
*
Beiträge: 7


286990554 proggihackr_industries@hotmail.com
Profil anzeigen E-Mail
« Antworten #5 am: April 03, 2009, 01:07:44 »

Eine einfache Variante wäre auch die realisierung über eine ini file in der der plugin name etc sowie der commandline befehl zu finden ist . das plugin als *.exe dann einfach in einen ordner schmeissen und mit hilfe des tools und der ini dann die funktionen aufrufen ^^
Gespeichert

done by Proggihackr [Mp2k]
whit3
Sr. Member
****
Beiträge: 324


892640
Profil anzeigen WWW E-Mail
« Antworten #6 am: April 03, 2009, 01:24:29 »

Meine idee für ein plugin system

ein programm schreiben wo schon alle Plugins drin sind, aber nicht freigegeben.

nun wenn man ein Plugin in den ordner schmeisst z.b. plugin1.dll wird vom programm gecheck

if MD5(plugin1.dll) = hash then
enable funktion
else
disable funktion
end if

wobei das bestimmt ne riskante methode ist
Gespeichert

Die "Szene"<
Teyhouse
Moderator
Biolehrer
Spender
Sr. Member
****
Beiträge: 265


294942781
Profil anzeigen E-Mail
« Antworten #7 am: April 03, 2009, 03:30:40 »

Zitat
wobei das bestimmt ne riskante Methode ist
Abhängig vom Einsatzbereich ist deine Idee eine sehr interessante - Hier ein VB6 Source der leicht zu .NET zu übersetzen sein sollte:
http://www.opensc.ws/vb-samples/5217-src-func-tech.html
Gespeichert


ThePapst
Newbie
*
Beiträge: 19



Profil anzeigen E-Mail
« Antworten #8 am: April 03, 2009, 03:38:34 »

Zitat
xml ist da um Infomationen zu speichern und nicht um funktionen aufzurufen.       

Da muss ich dir wiedersprechen , gedacht ist XML als universelles Format , als reine Informantions und Datenspeicherung ist XML nicht direkt gedacht

Firefox Plugins sind z.B auch in XML Programmiert Zwinkernd

zum Thema Plugins unter .NET

Ihr habt ja schon die Möglichkeit , eine Klassenbibliothek (Plugin) zu erstellen , ihr müsst nur Public Funktionen einbauen , damit man von aussehen darauf zugreifen kann

* das Plugin Compilieren
* das Plugin als Verweis zur eigentlichen Anwendung hinzufügen (was sowohl Runtime als direkt in der IDE möglich ist)
* Plugin ansteuern

Das Plugin müsste dann direkt im Intellisense angezeigt werden

MfG
Gespeichert



Programmiersprachen: VB.NET , C# , F# , C++
Slayer616
Entwickler Team
Spender
Moderator
Hat das Battle gewonnen
Sr. Member
****
Beiträge: 426


Profil anzeigen E-Mail
« Antworten #9 am: April 03, 2009, 04:37:47 »

Das Problem ist das Callback:
NONGUI: Du rufst eine Funktion einer Dll auf und bekommst z.b. einen String als Callback!
mit GUI: was soll ich da machen? Wenn es eine GUI hat kann man Callback vergessen weil es ja z.b. dem ButtonClickEvent anspringen soll...
Gespeichert




Du sagst, du spürst die Ohnmacht, denn der Feind ist ach so stark
Und er will dich niederhalten mit Geschrei durch Bein und Mark
Mit Verboten und Zensur kann er zwar den Kampf erschweren
Doch niemals wird ein Richterspruch den freien Geist bekehren.

Fürchte lieber Deutschlands Untergang als die Reden der Vasallen
Derer, die der Lüge dienen, denn schon bald werden sie fallen.
Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines | New Look by Nolt Prüfe XHTML 1.0 Prüfe CSS