aktives PlugIn ermitteln


JK_net

Erfahrenes Mitglied
Hallo!

Ich habe eine MDI-Anwendung, in der ich ein Menü mit meinen PlugIns habe.
Bei Bedarf wähle ich die Anwendung (PlugIn) aus, welche ich benötige, bzw. starten möchte.

Wenn ich jetzt aber zwei PlugIns geladen habe, möchte ich beim Aktivieren eines der beiden PlugIns herausfinden, welche Anwednung das ist. D.h. ich möchte zu der aktivierten Anwendung den Pfadnamen ermitteln.

Hat von Euch jemand eine Idee, wie man daran geht und das heraus findet?

Vielen Dank für Eure Hilfe im Voraus!

MfG
Jens
 

Norbert Eder

Erfahrenes Mitglied
Entweder machst es über den Namen, oder die Plugins müssen eine entsprechende Property besitzen. Ansätze gibts hierfür ein paar.

Wie machst es denn? Lädst du einfach die Assembly wenn das Plugin gestartet wird?
 

JK_net

Erfahrenes Mitglied
Hallo!

Hat sich schon erledigt, trotzdem vielen Dank!

Hier nochmal der Code zum Laden des PlugIns:
Code:
try 
{
Assembly a = Assembly.LoadFile(file);
// Make it MDI
// Get the types in the assembly
Type[] types = a.GetTypes();
// Iterate and find types derived from Form Instantiate them
foreach(Type t in types)
{
	if (t.BaseType == typeof(Form))
	{
	 Form form = (Form)Activator.CreateInstance(t);
	 form.MdiParent = this; // Set as MDI children
	 form.Text = ((MenuItem)data).Text;
	 form.Show();
	 break;
	}
}
}
catch(Exception ex)
{
MessageBox.Show("Fehler: " + ex.Message);
}
Im Menü sind die PlugIns mit dem Namen der DLL oder EXE eingetragen. Daher setzt sich dann die Variable "file" aus dem Pfad (vorgegeben), dem Menüeintrag und der Endung entweder DLL oder EXE zusammen.

Für mein Problem habe ich jetzt rausgefunden, dass ich
Code:
this.ActiveMdiChild.Text
verwenden kann, da die Caption des MdiChilds meinem Menüeintrag entspricht.

MfG
Jens