Du bist nicht angemeldet.

[Release] PluginLib [2.1]

Tsuyo

Registrierter Benutzer

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

61

Dienstag, 25. Mai 2010, 18:50

Ah, das ist natürlich nicht so toll.
Da ich das sozusagen als Modul erweiterung nutzen möchte.
Ich nutze ja Lua in meinem Programm, da kann man ja selber funktionen hinzufügen. Nun wollte ich, das jede Funktion dann ausgelesen wird und in Lua eingetragen wird.
gibts da iwie ne alternative oder eine andere Lösung?

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

62

Dienstag, 25. Mai 2010, 21:05

Was meinst du genau?
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Tsuyo

Registrierter Benutzer

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

63

Dienstag, 25. Mai 2010, 21:11

Also, in Lua kann man selbst funktionen hinzufügen.
Ich möchte nun alle Funktionen die Jetzt in meinem Programm stehen in Dlls schreiben, damit auch User selbst Module dafür schreiben können.
Dann möchte ich alle Dlls in dem ordner Modules auslesen lassen und in Lua Registrieren. Das geht mit registervalues("function") (Als String)

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

64

Dienstag, 25. Mai 2010, 22:06

Also sowie ich das verstehe möchtest du eine DLL haben, die alle verfügbaren Funktionen in deiner DLL ausliest und auflistet?
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Tsuyo

Registrierter Benutzer

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

65

Dienstag, 25. Mai 2010, 22:07

Genau sowas, natürlich muss man auch extern auf die Funktionen zugreifen. Und es werden mehrere Dlls, also müsste man das ebenfalls in einer For machen.

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

66

Dienstag, 25. Mai 2010, 22:16

Ich hab mal angefangen eine eigene PluginLib zu programmieren, die beim Laden der DLL alle Funktionen auflistet und beim Starten der Funktion überprüft ob diese Funktion auch vorhanden ist
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Tsuyo

Registrierter Benutzer

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

67

Dienstag, 25. Mai 2010, 22:34

Ist diese schon betriebsbereit?^^
Wäre natürlich ziemlich super.

/Edit:
Hab mir jetzt selbst das Plugin system geschrieben ^^

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tsuyo« (26. Mai 2010, 17:01)


singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

68

Donnerstag, 27. Mai 2010, 15:23

Meine PluginLib ist noch ne Beta-Version.

Postest du dein Plugin System
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Tsuyo

Registrierter Benutzer

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

69

Donnerstag, 27. Mai 2010, 15:30

Ist aber in C#, gerade keine wirkliche lust das wieder umzuschreiben:
 Hier klicken für weitere Informationen

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DirectoryInfo dinfo = new DirectoryInfo("modules/");
           FileInfo[] files = dinfo.GetFiles("*.dll");
           foreach (var f in files) {
               string p = f.FullName;
               Assembly SampleAssembly;
               Type[] Types = null;
               Type modul = null;

               SampleAssembly = Assembly.LoadFile(p);
               Types = SampleAssembly.GetTypes();
               foreach (Type i in Types)
               {
                   if ((i.Name == "Plugin"))
                   {
                       modul = i;
                       break;
                   }
               }
               ObjectHandle a = Activator.CreateInstanceFrom(p, modul.FullName);
               MethodInfo[] functionen = null;
               functionen = (System.Reflection.MethodInfo[])modul.GetMethods();
               string[] funktionen = ((string[])modul.GetMethod("Functions").Invoke(null, null)); ' functions ist eine funktion in der Assembly
               richTextBox1.Text += modul.FullName + "\r\n";
               richTextBox1.Text += "------------- \r\n";

               for (int i = 0; i <= funktionen.Length - 1; i++)
               {

                   lua.RegisterFunction(modul.GetMethod(funktionen[i]).Name, this, modul.GetMethod(funktionen[i]));
                   richTextBox1.Text += modul.GetMethod(funktionen[i]).Name+"\r\n";


               }
           }

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

70

Donnerstag, 27. Mai 2010, 17:24

Ich kann dir meine PluginLib mal zur Verfügung stellen.
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Tsuyo

Registrierter Benutzer

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

71

Donnerstag, 27. Mai 2010, 17:35

Interessieren würde es mich schon, nutzen für mein jetziges Projekt würde ich es eher nicht, ich hab mir ja schon ein kleines System geschrieben und an Lua angepasst ;)

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

FaltyR

Registrierter Benutzer

Beiträge: 3

Dabei seit: 8. März 2009

  • Private Nachricht senden

72

Sonntag, 27. Juni 2010, 10:10

Hi,

erstmal Respekt und Anerkennung an dich, Chrisber, für diese tolle ClassLibrary. Ich nutze sie schon erfolgreich in meinem Programm. Ich würde mir jetzt aber gerne noch eine Funktion wünschen, von welcher ich der Meinung bin das sie auch wirklich dazu gehört. Dies wäre die Funktion geladene Plugins während der Laufzeit wieder entladen zu können. Sprich eine Art "UnLoad" Funktion.

Über diese Funktion würde ich mich sehr freuen.


Gruß,
FaltyR

Florian

Tekker Deluxe ♥

  • »Florian« ist männlich

Beiträge: 150

Dabei seit: 14. Januar 2010

Wohnort: Lübeck

Frühere Benutzernamen: r3mote

Hilfreich-Bewertungen: 48

  • Private Nachricht senden

73

Montag, 28. Juni 2010, 23:18

Das ist eine gute Idee.. Dann könnte ich sie ebenfalls in ein Projekt von mir einbinden ;)

powachill

Vb-Guru

  • »powachill« ist männlich
  • »powachill« wurde gesperrt

Beiträge: 133

Dabei seit: 9. Januar 2010

Wohnort: -Geheim-

Hilfreich-Bewertungen: 13

  • Private Nachricht senden

74

Mittwoch, 30. Juni 2010, 11:36

Spitzen arbeit!
Finde ich echt toll sowas!
http://codingshare.de/ <- Visit please!
http://appsinfuture.de/ <- Visit please & Click on Ad please!

Chrisber

Super Moderator

  • »Chrisber« ist der Autor dieses Themas

Beiträge: 634

Dabei seit: 28. Januar 2007

Hilfreich-Bewertungen: 244

  • Private Nachricht senden

75

Samstag, 14. August 2010, 16:34

Auf Wunsch von FaltyR wurde die entsprechende Funktion eingebaut.
Lädt man ein Plugin via "LoadPlugin(Pfad, false)" so wird die DLL erst ausgelesen und dann als Assembly geladen.
So entfällt der Zugriff auf die Datei und diese kann während das Plugin noch geladen ist, problemlos bearbeitet oder gelöscht werden.

Gruß
» Alle sagten: das geht nicht. Dann kam einer, der wusste das nicht und hat's gemacht.

pc-freack

PC Freack

  • »pc-freack« ist männlich

Beiträge: 539

Dabei seit: 23. August 2010

Wohnort: Rotenburg Wümme

Hilfreich-Bewertungen: 24

  • Private Nachricht senden

76

Montag, 23. August 2010, 18:32

wie kann ich dieses Plugin System in meinem Programm einbauen?
Und wie erstelle ich dazu die richtige .ddl datei?
Ich bin noch neu in diesem Gebiet.
:thumbsup: MfG pc-freack :thumbsup:
Hat es geholfen? Dann bitte auf "Hilfreich" klicken

Aktuelles Projekt: SetupLib 1.3

Gugi

VB.NET & C# Programmierer

Beiträge: 1 506

Hilfreich-Bewertungen: 44

  • Private Nachricht senden

77

Montag, 23. August 2010, 18:36

wie kann ich dieses Plugin System in meinem Programm einbauen?
Und wie erstelle ich dazu die richtige .ddl datei?
Ich bin noch neu in diesem Gebiet.

.dll dateien kann man über neues projekt-> klassenbibliotheken erstellen ;)

Gruß, Gugi :thumbup:

Razer

Registrierter Benutzer

  • »Razer« ist männlich

Beiträge: 88

Dabei seit: 1. Februar 2008

  • Private Nachricht senden

78

Mittwoch, 25. August 2010, 01:05

Hey, du könntest mal eine kleine Doku schreiben ;)

Ganz ehrlich, trotz Sample hab ich noch nicht verstanden, wieso ich zur Initialisierung der Manager-klasse einen Namespace und Klassen-Name
angeben muss, geschweige denn, für was der gut sein soll und von was denn überhaupt.

Du könntest da mal ein wenig genauer erklären wie das ganze Prinzip funktioniert ;)

MfG
R

Razer

Registrierter Benutzer

  • »Razer« ist männlich

Beiträge: 88

Dabei seit: 1. Februar 2008

  • Private Nachricht senden

79

Donnerstag, 26. August 2010, 00:55

Also, nach Erlaubnis hab ich im Reflector mal das ganze angeschaut.
Ich hab hier was gefunden, was man noch eventuell optimieren könnte, und einen mehr oder weniger fatalen Fehler.

Du nutzt beim Laden der Plugins durch auslesen und speichern in ein Array Goto´s. Ich bin mir nicht sicher,
aber ich hab mal gehört, dass das nicht die schöne Art ist (keine Ahnung, ist das performance-mäßig schlecht oder wie?).
Man könnte dies statt goto und if mit einem einfachen (do-)While machen ;)


Nun zum Fehler: Nach genauerem durchsuchen hab ich rausgefunden wieso man Klasse und Namespace angeben muss.
Erstens: Ich finde es irgendwie dumm, da nicht jedes Plugin den selben Namespace und Klasse hat. Hab das nicht genau angeschaut
aber irgendwie kommt mir das so vor, als würde das etwas kompliziert sein und nicht wirklich Sinn machen.

Aber der Fehler liegt hier: Du suchst einen Typ in der Assembly in Abhänigkeit des Dateinamens. Somit, wenn man die DLL umbenennt findet er
die Klasse nicht mehr.

Visual Basic Quellcode

1
2
        Dim newValue As String = strArray((strArray.Length - 1)).Replace(".dll", "")
type = [assembly].GetType((Me.m_sNamespace.Replace("$plugin", newValue) & "." & Me.m_sClass.Replace("$plugin", newValue)))


Ich hoff das ist kein Problem wenn ich das jetzt rausschreib. Aber wie man sieht beziehst du den Plugin-Namen vom Dateinamen.
Wenn die Klasse aber anders heißt als die Datei, kann das ganz schnell schief gehen ;)

Sofern du eine andere Lösung findest, als den Dateinamen zu verwenden, würde das ganze wieder einwandfrei funktionieren ;)


MfG
R

singu

Lib Dev

  • »singu« ist männlich

Beiträge: 5 853

Dabei seit: 6. Oktober 2008

Hilfreich-Bewertungen: 43

  • Private Nachricht senden

80

Donnerstag, 26. August 2010, 08:34

GoTo verwendet er garantiert nicht. Der Reflector zeigt nur GoTo an, aber im Code muss der nicht drin sind.
FTPLib 2.1.0.0 - Einfacher Zugriff auf FTP-Server ** TextEffectsLib - Schöne Effekte für TextBox und Label ** ExtendedListView


Social Bookmarks