Verschiedenes

DotNetCompiler

Das .NET Framework stellt für die Programmiersprachen Visual Basic .NET und C# Compiler zur Verfügung, die auch auf dem Rechner des Endbenutzers verwendet werden können, um Code zu kompilieren. Zugriff auf diese Compiler bieten die Klassen VBCodeProvider (für Visual-Basic-.NET-Code) und CSharpCodeProvider (für C#-Code). Dieses Beispiel demonstriert, wie man den in ein Textfeld eingegebenen Quellcode für eine Klasse wahlweise in Visual Basic .NET oder C# in eine Datei kompilieren kann. Fehlermeldungen des Compilers werden dem Benutzer angezeigt; nach erfolgreicher Kompilierung wird die erstellte Anwendung gestartet.

Beispielprojekt (DotNetCompiler.zip)

Projekt im Visual-Basic-.NET-2003-Format.

RedirectConsole

Dieses Beispiel startet die Konsole oder eine andere Anwendung und leitet ihre Ausgaben in das Programm um. Auf diese Weise läßt sich eine Konsole bauen, die der Windows-Konsolen-Shell ähnlich ist. Natürlich können darin keine grafischen Konsolenprogramme ausgeführt werden. Durch eine kleine Änderung ist es mit dieser Methode möglich, die Ausgaben eines speziellen Programms wie ping oder netstat direkt im Programm zu verarbeiten.

Zuerst wird ein neues Process-Objekt erstellt und diesem die Daten des Prozesses zugewiesen. In unserem Beispiel wird cmd.exe gestartet und eigene Behandlungsroutinen für Ausgabe- und Fehlerstrom hinzugefügt. Dann werden für die einzelnen Ströme Threads gestartet, innerhalb derer so lange aus dem Strom gelesen wird, bis ein Fehler auftritt. Dies ist dann der Fall, wenn die Anwendung, zu der der gelesene Strom gehört, beendet wurde. Die Prozedur StreamOutput behandelt Ausgaben des Prozesses auf den Standardausgabestrom, StreamError ist dagegen für Ausgaben auf den Standardfehlerstrom zuständig. StreamInput dient dazu, Text auf den Eingabestrom der Anwendung zu schreiben, um diese steuern zu können.

Es gibt noch zahlreiche „alte“ Konsolenprogramme, aber auch neue Programme, die über die Konsole gestartet und gesteuert werden können. Beispielsweise kann das vorliegende Beispiel dahingehend erweitert werden, eine Stapelverarbeitungsdatei innerhalb der unsichtbaren Konsole ablaufen zu lassen, ohne daß der Benutzer der Anwendung davon Notiz macht.

Beispielprojekt (RedirectConsole.zip)

Projekt im Visual-Basic-.NET-2003-Format.

PlaySound

Dieses Beispiel enthält eine einfache Klasse DxSound, die über DirectX 8 eine Klangdatei wiedergeben kann. Dabei besteht die Möglichkeit, die Lautstärke der Wiedergabe zu manipulieren. Zum Abspielen wird ein DirectSound-Objekt instanziert und dieses an eine Fensterzugriffsnummer gebunden. Anschließend wird durch Aufrufen der Methode CreateSoundBufferFromFile des DirectSound8-Objektes ein Puffer mit der angegebenen Klangdatei erstellt und der Abspielvorgang über die Methode Play gestartet.

Die vorgestellte Methode zum Abspielen von Klängen sollte nicht in eigenen Anwendungen eingesetzt werden. Einerseits sind dazu DirectX 8 und die entsprechende ActiveX-DLL für die Verwendung mit Visual Basic erforderlich, andererseits erfordert diese Methode COM-Interoperabilität, was sich negativ auf die Leistung der Anwendung und die verfügbaren Systemressourcen auswirken kann. Stattdessen kann beispielsweise auf die API-Funktion PlaySound zurückgegriffen werden, die das Abspielen von gängigen Soundformaten unterstützt.

Beispielprojekt (PlaySound.zip)

Projekt im Visual-Basic-.NET-2003-Format.

XmlSerialization

Einfaches Beispiel, das zeigt, wie man Einstellungen in einer XML-Datei ablegen kann. Das Beispiel legt keinen Wert darauf, Klassen bereitzustellen, die in Anwendungen eingesetzt werden können, sondern soll schlicht und einfach das Verständnis fördern. Beim Programmstart wird versucht, Einstellungen aus einer XML-Datei zu laden, tritt dabei ein Fehler auf, werden Standardeinstellungen verwendet. Das Beispiel basiert auf Quellcode von Dirk Primbs [MSFT] und Peter Fleischer [MVP].

Beispielprojekt (XmlSerialization.zip)

Projekt im Visual-Basic-.NET-2003-Format.