Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# Plugin mit RemObjects Hydra oder Interfaces in C# (https://www.delphipraxis.net/106711-plugin-mit-remobjects-hydra-oder-interfaces-c.html)

Luckie 15. Jan 2008 13:47


Plugin mit RemObjects Hydra oder Interfaces in C#
 
Ich arbeite gerade mit dem Plugin-System Hydra von RemObjects. Unter Delphi hab eich es schon geschafft Daten mittels eines Interfaces auszutauschen zwischen Plugin und Host-Anwendung.

Jetzt versuche ich das gleiche unter C#. Leider sind da die Beispiele etwas mager. Mein bisheriger Versuch sieht so aus:
Plugin-Interface:
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace HydraPluginHost
{
    interface PluginInterface
    {
        string GetAuthor();
        string GetVersion();
    }
}
Plugin:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using RemObjects.Hydra;
using HydraPluginHost;

namespace HydraPlugin
{
    [Plugin, VisualPlugin]
    public partial class HydraPlugin : VisualPlugin, PluginInterface
    {
        public HydraPlugin()
        {
            InitializeComponent();
        }

        public string GetAuthor()
        {
            return "Michael Puff";
        }

        public string GetVersion()
        {
            return "0.1 [Demo]";
        }
    }
}
Laden des Plugin in der Host-anwendung:
Code:
private void lbPlugins_DoubleClick(object sender, EventArgs e)
        {           
            try
            {
                // wenn leer dann raus
                if (lbPlugins.SelectedIndex == -1) return;
                if (lbPlugins.SelectedItem is PluginDescriptor)
                {
                    // aktuelles Plugin entladen
                    currentPlugin = null;
                    hostPanel1.UnhostPlugin();
                    // neues Pluigin laden
                    currentPlugin = moduleManager1.CreateInstance(lbPlugins.SelectedItem as PluginDescriptor);
                    hostPanel1.HostPlugin(currentPlugin as IBasePlugin);
                    this.Text = (currentPlugin as PluginInterface).GetAuthor();
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Compilieren tut er es ohne Fehler. Allerdings zur Laufzeit bekomme ich in der Zeile this.Text = (currentPlugin as PluginInterface).GetAuthor(); den Fehler:
Zitat:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Ich müsste wohl erst eine Objekt-Instanz von PluginInterface erzeugen. Aber da stehe ich jetzt etwas auf dem Schlauch, wie ich das mache.

Alter Mann 15. Jan 2008 20:17

Re: Plugin mit RemObjects Hydra
 
Hi Lukie,

fehlt da nicht ein CoInitialize?

Habe mir die Seite von RemObjects mal angesehen, angeblich gibt es da die Möglichkeit
eine Trail zu laden, aber irgendwie geht es nur im Kreis: -> Traildownloads -> Testversion -> Traildownloads.

Kennst du ein Link wo es geht?

Gruß

Luckie 16. Jan 2008 09:05

Re: Plugin mit RemObjects Hydra
 
Zitat:

Zitat von Alter Mann
fehlt da nicht ein CoInitialize?

Das könnte es sein.

Zitat:

Habe mir die Seite von RemObjects mal angesehen, angeblich gibt es da die Möglichkeit
eine Trail zu laden, aber irgendwie geht es nur im Kreis: -> Traildownloads -> Testversion -> Traildownloads.

Kennst du ein Link wo es geht?
Ich habe den erst besten genommen, den mit Google geliefert hat und der ging (mit dem Firefox).

Luckie 16. Jan 2008 11:21

Re: Plugin mit RemObjects Hydra
 
In welchem Namespace ist denn CoInitialize enthalten?

Luckie 16. Jan 2008 12:44

Re: Plugin mit RemObjects Hydra
 
Ich habe mittlerweile herausgefunden, dass es unter C+# wohl kein CoInitialize gibt. Die Grundlegende Frage ist also, wie man ein Interface unter C# nutzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz