Informace:
- Tato knihovna obsahuje 3 třídy. Třída FileHasher, která vytváří hashe ze souborů, třída FileHasherExporter, která vytváří výstupní soubor s hashem (formát XML, textový soubor a zabezpečený soubor), který poté využívá druhá třída FileUpdater
- Třída FileUpdater aktualizuje lokální soubory podle aktualizačního souboru ze vzdáleného serveru
Použité prog. jazyky: C# (.net 4.0)
Stažení verze: 1.2 + doc
Značky: ,
Obrázky:
Informace:
- Umožňuje snadné vytváření, načítání a používání vlastních pluginů v aplikaci
- Možnost volání funkcí, vlastností, událostí, zdrojů z pluginu
- Má široké použití (lokalizace, čistě pro zdroje (obrázky, zvuky..), vlastní formuláře, úprava UI atd.
Použité prog. jazyky: C# (.net 4.5)
Stažení verze: 1.1 + doc
Značky: ,
using mimic.PluginLoader; namespace mimic.Plugin { public class Plugin : PluginBase { public override string Guid { get { return "VlastniGuid"; } } } }
using mimic.PluginLoader; using System; namespace mimic.Plugin { public class Plugin : PluginBase { public override string Guid { get { return "VlastniGuid"; } } public override string Author { get { return "mimic"; } } public override string Description { get { return "Základní informace"; } } public override Version Version { get { return new Version(1, 1, 0); } } } }
using mimic.PluginLoader; using System.Windows.Forms; namespace mimic.Plugin { public class Plugin : PluginBase { private Form form; public override string Guid { get { return "Commands"; } } // ve formuláři se musí předat instance public override void ParentForm(Form form) { this.form = form; } protected override void CommandReceiver(string command) { switch (command) { // ukončí furmulář case "close": if (form != null) form.Close(); break; // odebere tento plugin case "unload": PluginLoader.PluginLoader.Unload(Guid); break; } } } }
using mimic.PluginLoader; using System; using System.Drawing; using System.Threading.Tasks; using System.Windows.Forms; namespace mimic.Plugin { public class Plugin : PluginBase { private Random r = new Random(); private Form form; public override string Guid { get { return "WindowColorChaos"; } } public Plugin() { // při odebrání pluginu je nutné odebrat i události na formulář a // nastavít původní barvu formuláře OnDeactivated += () => { if (form != null) { form.Paint -= Paint; form.BackColor = Color.FromKnownColor(KnownColor.Control); form.Invalidate(); } }; } // ve formuláři se musí předat instance public override void ParentForm(Form form) { if (form != null) { this.form = form; // přidá se funkce do události pro vykreslení na formulář this.form.Paint += Paint; // automaticky bude překreslovat formulář každých 500ms PeriodicRepaint(500); } } // je voláno událostí pro vykreslení na formulář private void Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; // vygeneruje náhodnou barvu na pozadí formuláře g.Clear(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255))); } private async void PeriodicRepaint(int delay) { // dokud formulář bude existovat a plugin bude načten while (!form.IsDisposed && IsActivated) { form.Invalidate(); await Task.Delay(delay); } } } }
// bude automaticky každou 1s kontrolovat adresář "libs" jestli se nějaký // plugin přidal nebo odebral PluginLoader.AutoDetect(true, "libs"); // načte jeden plugin PluginLoader.Load("C:\\Plugin.dll"); // načte všechny pluginy v adresáři "libs" PluginLoader.LoadPlugins("libs"); // odebere načtený plugin podle jeho GUID PluginLoader.Unload("GuidPluginu"); // odebere všechny načtené pluginy PluginLoader.UnloadPlugins(); // odešle všem pluginům příkaz "close" (co se má stát je na každém pluginu) PluginLoader.SendCommand("close"); // získá plugin podle jeho GUID IPlugin myPlugin = PluginLoader.Get("GuidPluginu"); // zavolá funkci "Vypis" s parametrem "Ahoj světe", která je umístěná v pluginu myPlugin.Func("Vypis", "Ahoj světe"); // nastaví vlastnost "Cislo" na hodnotu 100 (vlastnost je typu INT), která je opět // umístěná v pluginu myPlugin.Property("Cislo", 100); // získá hodnotu z vlastnosti "Cislo" int cislo = myPlugin.Property<int>("Cislo"); // získá hodnotu z "TEXT" ze zdroje v Properties string text1 = myPlugin.Res().GetString("TEXT"); // získá hodnotu z "TEXT" z vlastního zdroje string text2 = myPlugin.Res("MyResource").GetString("TEXT"); // předá formulář do pluginu myPlugin.ParentForm(this); // odešle příkaz pouze tomuto pluginu myPlugin.SendCommand("show");