dharry Posted June 15, 2007 Share Posted June 15, 2007 Hallo, ich würde gerne Plugins für DVBViewer in .Net schreiben und zwar nicht nur welche die DVBViewer auslesen sondern auch wirklich erweitern und integrieren (über das Menü). Dazu wäre ein .Net API nicht schlecht. Ich würde mich auch bei der Arbeit an einer solchen API beteiligen, leider sind meine C bzw. C++ Kenntnisse begrenzt, habe mich aber schon etwas über den Aufruf von ManagedDLLs aus Unmangagedprogrammen informiert. Habe versucht ein kleines Plugin in C++ zu schreiben hatte aber bisher keinen Erfolg. Wenn es noch mehr Leute gibt die an so was interessiert sind und evtl. auch helfen wollen bitte melden. Noch ein paar Suchwörter da .Net zu kurz ist: DotNet, Csharp, NetAPI Quote Link to comment
Lars_MQ Posted June 15, 2007 Share Posted June 15, 2007 Ein paar kurze Gedanken dazu: Universell wäre die folgende Methode: Eine Adapter-DLL die folgendes macht/bereitstellt: - Laden einer bestimmten assembly (wie auch immer). - diverse exports, die erlauben für die einzelnern API-Funktionen einen Callback zu setzen. Der Ablauf wäre folgender: Die DLL lädt die Assembly. Die assembly importiert die exportierten DLL funktionen Die Assembly übergibt über die DLL funktionen die Callbacks an die DLL (via delegates (?)). Die dll leitet die aufrufe der API durch. Als zusatzbonbon könnte man die IDVBViewer Schnittstelle an die Assembly mit übergeben und die könnte dort benutzt werden. Exports & Co sind keine Probleme so eine DLL könnte ich bereitstellen. Was ich nicht weiss, wie lädt man gezielt eine Assembly? per COM? oder muss man die CLR starten und den ganzen mumpitz drumherum? Ein anderer weg wäre die assembly als COM-Bibliothek auszulegen. Man generiert ein DVBViewer Plugin Interface, dass in die Assembly importiert und implementiert wird. Die DLL bekommt dann die ClassID und erzeugt somit eine Instanz der Bibliothek. Denkbar wäre auch der Weg über den StdComponentCategoryMgr, daß nutze ich zum beispiel für die Plugins des Recordingservice... Quote Link to comment
JMS Posted June 16, 2007 Share Posted June 16, 2007 (edited) Wie in einem anderen Thread von vor ein paar Tagen schon mal kommentiert, habe ich das Problem mit Runtime und Assembly und Wrapper und und und schon mal vor laaanger Zeit (inzwischen gibt es ein internes Update für Visual Studio 2005) für ein anderes Produkt gemacht, das sollte hier genauso gehen. Wenn es aber über COM InterOp ging, wäre das technisch sehr viel einfacher. Die volle Lösung ist wesentlich komplexer, hätte aber (wie im Beispiel) eventuell den Vorteil, dass man eine vernünftige .NET PlugIn Basisklasse anbieten könnte, die alle InterOp Geschichten (COM, SendMessage, export, ...) elegant verbirgt. Der Nachteil der COM Lösung ist das elendige Marshal.ReleaseComObject, bei dessen Auslassen man die eigenartigsten Effekte bekommen kann. Jochen <Zusatz>Direkter Download zu dem Framework mit C++ Wrapper et al.</Zusatz> Edited June 16, 2007 by JMS Quote Link to comment
dharry Posted June 19, 2007 Author Share Posted June 19, 2007 Wie man ein .Net-Assambly aufrufen kann ist hier beschreiben: CodeProject Das ist denke ich relativ simpel, so lang man mit einfachen Datentypen arbeitet, wie und ob es mit komplexen Objecten in der Schnittstelle funktioniert wird sich zeigen. Das würde bedeuten mann müsste "nur" jede Mehtode und jeden Export (einfache Methoden mit Returning Paramerter oder?) deklarieren und durchreichen. Wenn jemand Lust und Zeit hat kann er ja mal in C++ oder so die grundsätzlich nötigen Exports und Methoden Deklarieren und ich versuch dann mal Rückgabewerte aus C# zu bekommen. Quote Link to comment
dharry Posted August 22, 2007 Author Share Posted August 22, 2007 Wenn mir jemand mal beispielshaft ein .Net-Wrapper Plugin schreiben würde (nur die Standartplugin routienen oder so) dann würde ich das Plugin ausbauen. Wäre toll wenn sich jemand melden würde. Quote Link to comment
erwin Posted August 23, 2007 Share Posted August 23, 2007 Wenn mir jemand mal beispielshaft ein .Net-Wrapper Plugin schreiben würde (nur die Standartplugin routienen oder so) dann würde ich das Plugin ausbauen. Wäre toll wenn sich jemand melden würde. Vielleicht ist dies ein Einstieg für dich http://www.DVBViewer.info/forum/index.php?showtopic=19515 mfg erwin Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.