Hilfe - Suche - Mitglieder - Kalender
Vollansicht: [Tutorial] VB.Net Plugin Prog in deutsch : Teil 1
MCE-Community.de > Windows Media Center Software > Media Center PlugIns/AddIns, Hacks, Mods + ZusatzSoftware > [mceCodeZone] Programmierung > mceCodeZone - Grundlagen & Tutorials
Braun
Hallo zusammen,

ab sofort finden Interessierte User in diesem Forum Tutorials von mir. Meine Tutorials beschreiben Step by Step den Weg von der ersten Code-Zeile bis hin zur Verteilung via Setup. In der Form wohl das Erste Tut seiner Art.

Inhalt:
1. Erstellung einer Net DLL, die wir zu einer ActiveX DLL machen
2. Erstellen von Screens mittels HTML, CSS und VBScript
3. Erstellen eines Setups, was alles beinhaltet

Versionshistorie:
07. März 2006
Version 2.0.0
Die fehlerhafte Beschreibung aus Version 1.0.0 wurde entfernt und das Tut wurde zahlreiche bebildert

07. März 2006
Version 1.0.0
In der PDF-Datei war eine fehlerhafte Beschreibung

Download:
Link zum Tutorial
http://www.upnews.de/mcetuts/Tutorial_VBne...ersion2_0_0.zip

Link zum dazugehörigen Projekt
http://www.upnews.de/mcetuts/MeinPlugin.zip

Support/Fragen/PlugIn-Wünsche/-Anregungen:
Bitte in diesem Fall eine Email an mail@upnews.de senden
usa
Ich kann es zwar fachlich nicht beurteilen ... aber es sieht nach einer prof. Anleitung aus ...

Danke für deine Mühe ! flowers.gif
usa
Bittet laded euch die aktuelle Version runter, da in der "alten" Anleitung ein kleiner aber unschöner Fehler enthalten gewesen. Der Fehler kann zu einem MCE Crash führen !

Dringend aktuelle Version downloaden.


Für Notfälle: KLICK
Braun
Sorry Leute für die Umstände.
Was ist das Problem: Auf Seite 35 steht man soll "CLSID" markieren und DeleteAtUnistall = true setzen und das darf auf gar keinen Fall sein. Da hat mein PDF-Konverter vom Wort "Schlüssel" das l geklaut und danch stand noch das Wort "unter". Ich nehme mir gerade die PDF noch mla vor und lade gleich das saubere Paket wieder rauf. Sorry noch mal für den Umstand.
Braun
UPDATED, JETZT WIEDER ALS SAVE smile.gif
pappnase
respect.gif respect.gif respect.gif respect.gif

wirklich das beste, was ich bis jetzt zum Thme MCE und VB.Net gesehen habe.

Mehr davon ! clap.gif clap.gif clap.gif
Braun
danke für das lob. hast du es auch mal ausprobiert pappnase? und war es für dich schlüssig in sich gegliedert erklärt?

für vb.net wird einen teil2 geben (ist gerade in arbeit), aufbauend auf 1, der ein fertiges plugin darstellt. das plugin wird vielleicht aus sicht dem ein oder anderen keinen sinn darstellen, aber nun gut. idee ist relativ einfach. ich kann, wenn ich will zentral, zum beispiel auf einem server eine xml anlegen lassen. darin werden notizen und evtl. remider flag gesetzt sein. ich kann also von verschiedenen mce's die ich im haus habe so auf notizen zugreifen, neue anlegen, bearbeiten usw. wenn zentral werden alle mce's logischerweise informiert, wenn informiert werden soll.

ein derartiges beispiel lässt sich dann heben auf kontakte, personen, adressen, termine usw.
pappnase
habe dein tutorial bisher nur gelesen (muss nebenbei leider noch arbeiten), aber die Einführung ist für einen, der sich ein wenig mit vb.net auskennt völlig ausreichend, um mit dem programmieren zu beginnen.

ich werd mich mal am wochenende hinsetzen und auch was kleines programmieren. ich habe in meinem MCE (bitte jetzt nicht lachen) ein tape-deck von plusdeck. von denen habe ich die schnittstelle bekommen für die steuerung des teils, jetzt werde ich mir eine oberfläche bauen.

zu deiner idee. was du da vorhast, ist ja irgenwie ein outlook-artikes system. daran habe ich mich auch schon gesetzt. meine idee war es auf meine pst datei auf meinem arbeitsrechner remote vom mce zugreifen zu können. dieses jedoch macht probleme mit der mapi-schnittstelle, da die pst nicht von mehren prozessen geöffnet werden kann. ich habe dan ein wenig mit mapi 3.1 (.net implementation für mapi) rumgespielt, aber die verwenden dort datenstrukturen, die nur unter C# angeproggt werden können (sorry no vb.net).

die idee an sich ist gut, jedoch muss irgendwo ein hintergrundprozess (dienst etc.) laufen, der die xml datei überwacht und ein signal an die mce's schickt, wenn eine notiz fällig ist. der rest ist dann nur noch ein wenig system.xml und html und javascript.
SaX
respect.gif Ich bin selbst Entwickler und nutze VB schon seit Version 5 und bereits seit 2001 .NET (jetzt endlich auch Version 2005). Ich werde das Tut in den nächsten Tagen mal ausprobieren, es liest sich sehr gut, seht gute Bilder die mehr als 1000 Worte sagen, und ein angenehmer Schreibstill. thumbsup.gif

Das Coding sieht auch gut aus, seht gut Kommentiert (meine persönliche Lieblingsbeschäftigung) und Strukturiert. So ist eine Erweiterung sicher kein Problem.

Also eines der besten Tutorials das ich je gelesen habe respect.gif
Braun
@sax: echt, du kommentierst gerne. mag ich ja eigentlich gaaaar nicht. und hilfe schreiben auch nicht smile.gif

gib mir mal feedback nach dem weekend, wei du damit zurecht gekommen bist.
SaX
ZITAT(Braun @ 09.03.2006, 10:49)
@sax: echt, du kommentierst gerne. mag ich ja eigentlich gaaaar nicht. und hilfe schreiben auch nicht smile.gif

biggrin.gif Da ist mein Sarkasmus leider nicht ganz rausbekommen. Das ist wohl eine der undankbarsten Aufgaben in der Entwicklung, kommt gleich nach schreiben der Hilfe blink.gif Beim Kommentaranteil beträgt leider unter 20%, was ja wirklich nicht viel ist. Darum auch das besondere Kompliment dafür.
Braun
hab ich*s doch gewusst biggrin.gif

vielen dank für die flowers.gif
Braun
Nachtrag:
Auf Seite 65 und 66 steht beschrieben, dass man die beiden Schlüssel mit in die Registry einbauen soll. Sollte es bei euch sein, dass diese mit "Installieren" nicht in die Registry geschrieben werden, dann markiert in eurem Setup jeweils die beiden Schlüssel:

{7DD95801-9882-11CF-9FA9-00AA006C42C4} und
{7DD95802-9882-11CF-9FA9-00AA006C42C4}

und geht auf Eigenschaften. Dort stellt ihr jeweils ein, dass diese au dann erzeugt werden, wenn die Schlüssel keinen Inhalt haben. Dann wieder installieren und dann sind die Schlüssel auch in der Registry zu finden. Diese beiden Schlüssel sind wichtig, da damit unsere Pseudo ActiveX als "sicher" markiert werden.
lollipop
Hallo Braun

ein kleiner Hinweis zum Tutorial.

Auf Seite 26 steht die Ergänzung:
<Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyKeyFile("mysnk.snk")>


Bei mir wird eine Fehlermeldung erzeugt. Die Reihenfolge muss umgekehrt sein:
<Assembly: AssemblyKeyFile("mysnk.snk")>
<Assembly: AssemblyVersion("1.0.*")>


Dann gehts ....


Lollipop

Aber sonst ist das ganze Doku eine Wucht .... Super und Danke
Braun
ZITAT(lollipop @ 30.03.2006, 23:14)
Hallo Braun

ein kleiner Hinweis zum Tutorial.

Auf Seite 26 steht die Ergänzung:
<Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyKeyFile("mysnk.snk")>


Bei mir wird eine Fehlermeldung erzeugt. Die Reihenfolge muss umgekehrt sein:
<Assembly: AssemblyKeyFile("mysnk.snk")>
<Assembly: AssemblyVersion("1.0.*")>


Dann gehts ....


Lollipop

Aber sonst ist das ganze Doku eine Wucht .... Super und Danke

Hey

die Reihenfolge spielt in der AssemblyInfo keine Rolle biggrin.gif
Du hast sicher nach dem Copy&Paste die Meldung bekommen, dass er die Datei nicht finden kann. In dem Fall muss einfach nur die IDE geschlkossen und neu gestartet werden. Natürlich kann man dann auch den von dir beschriebenen Weg gehen.

Als Nachtrag sollte man zum dem Tut noch sagen, dass ich versucht habe (siehe Überschrift) alles für VBler zu machen. Somit habe ich VBScript in den HTML-Seiten verwendet. Man sollte aber lieber Javascript nehmen, da dann die Navigation besser klappt, bzw. man muss sich dann um diese auch nicht mehr kümmern.

Ich danke für dein Lob und hoffe, dass es dir als Einstieg in die Welt der PlugIn-Programmkierung behilflich ist.

Es war ein Tut 2 unter VB geplant, wo auch den Reminder usw. beschrieben werden sollte. Leider lässt sich das nicht machen, da ich den Reminder in C++ managed schreiben musste und wie oben beschrieben alles auf JavaScript umgestellt habe (suche nach Notizen-PlugIn von mir, dann weisst du warum). Somit wäre es also nicht mehr an einem Faden, denn das ActiveX-DLL, die ja in VS 2003 nur eine Pseudo-ActiveX ist ist in VB, die HTML-Seiten in JS und dann noch der Reminder in C++ würde den ein oder anderen sicher voll aus de Bahn werfen.

Aus diesem Grund wird es bei diesem Teil 1 bleiben. Sorry dafür, geht nicht anders.

Dann noch ein Tipp, für alle diejenigen, die gerne wie hier beschrieben eine ActiveX-DLL via VS 2003 machen wollen. Ich kann euch nur empfehlen direkt VB6 zu nehmen. Grund dafür ist, dass eine wie vorgestellt, ActiveX-DLL via VS 2003 keine wirkliche ActoveX ist. Sondern es wird eine TLB Datei erstellt. Lokal und im NEtz würde diese ActiveX immer funktionieren. Allerdings über die XBox als Extender nicht.
Das liegt einfach daran, dass normalerweise eine ActiveX in System32 registriert wird. In dem Tut wird über das Setup zwar ebenfalls als sicher markiert und auch registrtiert, aber es ist halt keine DLL-Datei, sondern eine TLB, wo die Infos zum ActioveX zu finden sind. Und die XBox 360 als Extender als Beispiel erwartet eine vollwertige ActiveX und die bekommt man halt sicher mit VB6 zusammengebaut.

Dann nur so als Tipps am Rande.

Viel Spaß weiterhin.
aumiller
@braun

danke vielmal für deine mühe, werde mich auch mal mit deinem tut auseinandersetzen. respect.gif

ist activex denn sehr schwierig zu programmieren ? ich habe vb6 installiert und auch schon was ganz winzig kleines gebastelt, aber darf mich daher gar nicht als programmierer schimpfen. thumbsup.gif
Braun
ZITAT(aumiller @ 01.04.2006, 15:47)
@braun

danke vielmal für deine mühe, werde mich auch mal mit deinem tut auseinandersetzen. respect.gif

ist activex denn sehr schwierig zu programmieren ? ich habe vb6 installiert und auch schon was ganz winzig kleines gebastelt, aber darf mich daher gar nicht als programmierer schimpfen. thumbsup.gif

zu deiner indirekten Frage. Ich definiere einen Programmierer als solchen, wenn er/sie die Grundlagen der Programmierung kennt. Das ist das A und O. Wenn du die verstanden hast (ist ne ganze Menge - Beispiel Zeiger und Speicherverwaltung und zum Beispiel Messages und und und), dann ist es grundsätzlich egal, mit welcher Sprache du arbeitest.

Wenn du einmal den Begriff Bedingung gehört hast und weißt, wie man diese mal so grundsätzlich formulioert und was dahinter steckt, dann musst du in der jeweiligen Sprache halt syntaktisch etwas umdenken. Als Beispiel heißen Bedingungen in standard C++ Entscheidungen oder zum Beispiel gibt es keine Prozeduren, wie zum Beipsiel in VB6 in C++.

In VB6 bekommst du viele Dinge nicht angezeigt. Nimm das Beispiel "Klasse" in VB6. Du kannst dort eben gar keinen Rumpf schreiben, weil das die IDE für dich im hintergund beim kompilieren tut. Das hat am Anfang echt Vorteile will man denken. Aber nimm das Beispiel Konstruktoren/Destruktoren. Es gibt zwar unschöne Wege die in VB6 umzusetzen, aber eben nicht nach dem Standard, was man so unter Programmierung versteht. Es gibt also extrem viele Unterschiede. In VB6 wirst du dir, genau so wie in Dotnet kaum Gedanken über Zeiger machen. Das ist aber super wichtig. Wenn man nicht verstanden hat, was ein Zeiger (Referenz-Variable) und was Objekte sind und wie diese nun im Speicher abgelegt werden und vor allem, wass das alles mit datentypen zu tun hat, dann sollte man bei jeder Programmsprache bitte nie das Schlüsselwort "new" verwenden smile.gif

In diesem Sinne, wenn du Fragen hast ....
lollipop
Hallo Braun

Du schreibst, das AcitveX lieber in VB6 zu machen. OK, aber kennst Du ein Tutorial, in dem die Erstelltung (im Zusammengang mit MCE) beschrieben wird? Natürlich habe ich ein Handbuch VB6, aber es gibt ja immer wieder so nette Ausnahmen mit dem MCE oder so ...

Auch die Registrierung eines ActiveX (habe über Google wirklich nichts mir entrsprechendes gefunden) ist ja nicht immer so einfach.

Und wie kann ich eine CLSID erzeugen? Oder wird diese in jedem Fall immer als neue, eindeutige ID erzeugt?

Lollipop
Braun
ZITAT(lollipop @ 02.04.2006, 22:48)
Hallo Braun

Du schreibst, das AcitveX lieber in VB6 zu machen. OK, aber kennst Du ein Tutorial, in dem die Erstelltung (im Zusammengang mit MCE) beschrieben wird? Natürlich habe ich ein Handbuch VB6, aber es gibt ja immer wieder so nette Ausnahmen mit dem MCE oder so ...

Auch die Registrierung eines ActiveX (habe über Google wirklich nichts mir entrsprechendes gefunden) ist ja nicht immer so einfach.

Und wie kann ich eine CLSID erzeugen? Oder wird diese in jedem Fall immer als neue, eindeutige ID erzeugt?

Lollipop

@lollipop:

Du brauchst bei der Erstellung einer ActiveX DLL in VB6 erst mal nichts beachten. Du machst halt einfach deine Klasse/deine Klassen mit Methoden usw.

Wichtig ist zum Schluss, dass du ein Internet Cab Setup mit dem Assistenten in Vb6 machst. Und dort setzen du in irgendeinem Schritt die beiden Werte "Sicher für xy", also dort einen Haken rein. Das bewirkt nämlich, dass die beiden Schlüssel in die Registry unter der CLSID gesetzt werden, wie in meinen Tut von Hand beschrieben steht.

Du kannst auch einen anderen Setup-Typ nehmen, dann müsstest du die Registrierung von Hand machen, also die beiden Schlüssel noch in die Registry setzen lassen. Was du dafür natürlich dann brauchst, ist die CLSID/GUID. Diese vergibt VB6 autoamtisch. Damit sich diese nicht ändert, muss man die Projekt-Kompatibilität einstellen. Dazu bitte mal in Google suchen. Aber durch eine Einstellung wird garantiert, dass diese einmal erzeugte GUID sich nie wieder ändert, wenn man die Datei neu registriert. Ich meine es wäre Binärkompatibilität, was eingestellt werden muss.

Die GUID vorher zu kennen, denke nicht, dass dies mit VB6 geht. Was du machen kannst. Speichere das Projekt und gehe auf kompilieren. Es wird dann die DLL erstellt und auch sofort auf der Kiste registriert. Jetzt müsstest du die Binärkompatibilität in den Projekteigenschaften setzen und nochmal kompilieren.

DAS MUSS SOFORT HINTEREINANDER GEMACHT WERDEN

Dann steht die GUID fest. Danach sucht du in der Registry mit "Projektname.Klassenname" und wirst sicher den Schlüssel finden. Und dieses könntest du dann wie oben beschrieben für die weiteren Aktionen verwenden.
lollipop
Danke für den Hinweis.
Werde leider erst in einigen Tagen wieder wirken können .....

Lollipop
Braun
ZITAT(lollipop @ 03.04.2006, 16:42)
Danke für den Hinweis.
Werde leider erst in einigen Tagen wieder wirken können .....

Lollipop

halt mich mal auf dem Laufenden. THX
amelie2805
ZITAT(pappnase @ 08.03.2006, 20:22)
ich werd mich mal am wochenende hinsetzen und auch was kleines programmieren. ich habe in meinem MCE (bitte jetzt nicht lachen) ein tape-deck von plusdeck. von denen habe ich die schnittstelle bekommen für die steuerung des teils, jetzt werde ich mir eine oberfläche bauen.

@ pappnase:
Warst Du erfolgreich mit dem tape-deck. Ich habe das nämlich auch bei mir eingebaut und suche eine Möglichkeit es in MCE zu integrieren.
heinrich
[quote name='Braun' date='07.03.2006, 14:26' post='71703']
Hallo zusammen,

ab sofort finden Interessierte User in diesem Forum Tutorials von mir. Meine Tutorials beschreiben Step by Step den Weg von der ersten Code-Zeile bis hin zur Verteilung via Setup. In der Form wohl das Erste Tut seiner Art.

Link zum dazugehörigen Projekt
http://www.upnews.de/mcetuts/MeinPlugin.zip



hallo
das media center hat micht total begeistert und ich möchte mit dem programmieren anfangen. dazu habe ich alle programme zusammen und würde mir gerne das tutorial zu gemüte führen. der link zeigt aber leider ins leere.

heiner
eclere
Hallo,

das wird wohl daran liegen, dass Braun zumindest nicht mehr aktiv, am Communityleben teilnimmt. Am besten holst Du Dir das SDK. Ist wegen MCML, XBAP sowiso aktueller. URL habe ich grad nicht parat, wird sich aber sicher über die Suchmaschine, bzw. den Blog finden lassen.

Gruß Thorsten
elchielch
leider ist der link nicht mehr gültig kann jemand die dateien neu uploaden
Dieses ist eine vereinfachte Darstellung unseres Foreninhaltes. Um die detaillierte Vollansicht mit Formatierung und Bildern zu betrachten, bitte hier klicken.
Invision Power Board © 2001-2012 Invision Power Services, Inc.