text: C# Tipps und Tricks: August 2010
  Um Youtube Videos mit C# abzuspielen, ist das Windows Media Player Control nötig, wie schon im Post zum Abspielen von mp3 - Dateien.
  Das Steuerelement lässt sich in die Toolbox hinzufügen, in dem man rechts auf diese klickt und dann Element auswählen ... anwählt, im sich öffnenden Fenster zu COM - Steuerelementen wechselt und Windows Media Player auswählt.
  Die abzuspielende Multimediadatei lässt sich über die Eigenschaft URL bestimmen. Im Prinzip kann jetzt einfach die Adresse des Youtube Videos als URL gespeichert werden und der Media Player spielt das Video auf dem C# Formular ab. Allerdings muss der direkte Pfad zum Video angegeben werden und nicht die URL - Adresse, unter der das Video online betrachtet werden kann. Statt dem Infix "watch?v=" ist "/v/" nötig, welches den Ordner bezeichnet, in dem die Youtube Videos liegen.
  Im Video darf außerdem die Option Einbetten nicht deaktiviert sein.
  Im Browser lässt sich ein Video unter dem Link "http://www.youtube.com/watch?v=8EbtaLNHluE" öffnen, das Steuerlement benötigt aber den Link "http://www.youtube.com/v/8EbtaLNHluE".
  Folgender Code lädt das Video in den Media Player, das Video kann dann per Klick auf "Play" im Video Fenster gestartet werden:
  Die folgende Beispielfunktion ändert die URL automatisch, sie nimmt also als Parameter den Online Link zum Youtube Video entgegen und spielt dieses dann ab:
  Ein Kommentar vom Benutzer Tingel regte mich zum Schreiben dieses Posts an.
  Er wollte nämlich, zum Abspielen einer Audiodatei mit C#, statt dem Windows Media Player wie hier beschrieben, einen guten OpenSource Player verwenden.
  Der beste kostenlose Player ist meiner Meinung nach der VLC Player, also durchforstete ich das Internet nach Wegen, diesen in eine C# Anwendung einzubinden.
  Das ist auch tatsächlich möglich, es geht wahrscheinlich auch mit anderen Playern, diese müssen nur eine öffentliche Schnittstelle zur Einbindung anbieten.
  Beim VLC Player ist diese in Gestalt einer ActiveX Komponente vorhanden, welche als .dll Datei ausgeliefert wird.
  So ist gleich bei der Installation des Players wichtig, dass der Menüpunkt "ActiveX Komponente" ausgewählt wird (ist aber standardmäßig eh schon aktiviert).
  Nun wird bei der Installation das ActiveX - Steuerelement installiert und am Computer registriert.
  Das Steuerelement kann nun schon in .Net eingebunden werden: Mittels Rechtsklick auf die Toolbox, Elemente auswählen öffnet sich ein Fenster zum Hinzufügen von neuen Steuerelementen zur Toolbox. Wir wechseln nun zur Reiterkarte "COM-Steuerelemente" und aktivieren dort den Haken vor dem Eintrag VideoLAN VLC ActiveX Plugin v1.
  Ist dieser Eintrag nicht vorhanden, muss die .dll Datei manuell registriert werden. Die besagte Datei heißt axvlc.dll und liegt im VideoLAN Verzeichnis.
  ActiveX Steuerlemente können über den Befehl regsvr32 registriert werden, angenommen dem Pfad C:\Program Files (x86)\VideoLAN\VLC\axvlc.dll sind folgende Schritte nötig: Start - Ausführen regsvr32 "C:\Program Files (x86)\VideoLAN\VLC\axvlc.dll".
  Wurde das VLC Control erfolgreich zur Toolbox hinzugefügt, kann es wie jedes andere auch auf das Formular gezogen werden.
  Zum Abspielen eines beliebigen Videos oder einer Audiodatei (in C# können über das VLC Steuerelement alle Dateiformate abgespielt werden, die auch der "normale" VLC Player spielen kann - also quasi fast alle) muss das Multimediaobjekt zuerst zur Playlist hinzugefügt werden, was durch die Methode addTarget() erreicht werden kann. Diese erwartet 4 Parameter, der erste gibt den Pfad zum abzuspielenden Objekt an. Als zweiten Parameter können Optionen übergeben werden (wie zum Beispiel das Seitenverhältnis). Der 3. Parameter ist der Abspielmodus und der 4. der Einstiegspunkt in der aktuellen Playlist.
  Zum Abspielen muss dann nur noch die Methode play() aufgerufen werden.
  pause() hält das Abspielen an, über einen erneuten Aufruf der Methode play() wird das Video / die Audiodatei an der gleichen Stelle fortgesetzt.
  Die Lautstärke des Audiosignals kann über den Parameter Volume gesetzt werden, 0 bedeutet kein Ton, 100 volle Lautstärke.
  Das folgende Beispiel spielt das Video "Matrix" auf meinem Desktop bei 50% Lautstärke ab.
  Der Methode addTarget() wurden keine Optionen übergeben, der Abspielmodus ist wohl selbsterklärend und -666 als letzter Parameter bezeichnet den letzten Eintrag in der aktuellen Playlist.
  Achtung: Bei neueren VLC Versionen muss dem Dateipfad ein "file:///" vorgestellt werden, sonst wird die Datei nicht abgespielt!
  Nachtrag: Über diesen Post habe ich nun auch ein Video auf Youtube hochgeladen: http://www.youtube.com/watch?v=Bh4qsHrk910
  Eingestellt von Oliver S um 00:08 Kommentare:
  Im .Net Framework werden alle am PC angeschlossenen Bildschirme im Array Screen.AllScreens hinterlegt.
  Über die Eigenschaft Length kann die Anzahl dieser ausgelesen werden,
  in C# ermittelt also folgende Anweisung die Anzahl der angeschlossenen Bildschirme:
  Eingestellt von Oliver S um 00:10 Kommentare:
  Um mittels C# einen Link zu einer beliebigen Webseite mit dem Standardbrowser zu öffnen, ist einfach ein Aufruf der Funktion System.Diagnostics.Process.Start() mit der Ziel - URL als Parameter nötig.
  Es öffnet sich dann automatisch der Standardbrowser mit der gewünschten Internetseite.
  Folgendes Beispiel öffnet diesen Blog:
  System.Diagnostics.Process.Start("http://csharp-tricks.blogspot.com/");
  Eingestellt von Oliver S um 22:33 Kommentare:
  Eingestellt von Oliver S um 20:16 Kommentare:
  Um C# auch über andere Medien populärer zu machen, habe ich heute mal ein Youtube Konto eingerichtet.
  Auf dieses möchte ich von nun an einige Videos hochladen, ebenfalls mit kleinen Tutorials oder ähnlichem über die Programmiersprache C#, passend zu diesem Blog.
  Das erste Video ist oben, es zeigt den Matrix Screensaver, den ich in diesem Post vorgestellt habe.
  Würde mich freuen wenn ihr mal vorbeischaut, Tipps, Wünsche und Kritik sind jederzeit willkommen!
  Das Video findet ihr unter folgendem Link: http://www.youtube.com/watch?v=CTMwMkZjHJg
  Eingestellt von Oliver S um 23:24 1 Kommentar:
  Heute möchte ich euch zeigen, wie man mittels C# den aktuellen Bildschirmschoner (Screensaver) des Computers startet.
  Hierfür benötigen wir eine WinAPI - Funktion, um diese einbinden zu können, brauchen wir als erstes folgende using - Direktive:
  Die zum Laden des Bildschirmschoners benötigte Funktion heißt SendMessage(), sie wird folgendermaßen eingebunden:
  Diese Funktion ist allgemein dazu da, eine Meldung an ein bestimmtes Fenster zu senden. Das Zielfenster wird über den Parameter hWnd spezifiziert.
  der 2. Parameter, Msg, beschreibt die zu sendene Nachricht.
  Die letzten beiden Parameter ermöglichen die Übergabe von bestimmten Parametern neben der Nachricht.
  Um den aktuellen Screensaver aufzurufen, sind folgende Parameter nötig:
  Eingestellt von Oliver S um 14:19 Keine Kommentare:
  Mit der Programmiersprache C# kann man ganz leicht das Aussehen des Cursors ändern, also zum Beispiel statt dem standardmäßigen Pfeilzeiger eine Sanduhr o.ä. anzeigen.
  Die dafür zu ändernde Eigenschaft heißt Cursor, eine große Auswahl an Mauszeigersymbolen gibt es in der Klasse Cursors.
  Ändert man den Mauszeiger über die Methode, gilt dies jedoch nur für den Bereich des Formulars.
  Um beispielsweise eine Sanduhr (oder in Windows Vista und höher einen Kringel als Wartesymbol) als Cursorsymbol auszuwählen, ist folgender Code nötig:
  Ich möchte hier noch ein paar sinnvolle Symbole zeigen:
  Eingestellt von Oliver S um 12:48 1 Kommentar:
  In einem früheren Post gab's Infos, wie man den Computer mit C# herunterfährt oder den Benutzer ausloggt.
  Heute möchte ich euch zeigen, wie man mittels C# den Computer sperrt (hat den gleichen Effekt wie Strg + Alt + Entf - Computer sperren oder Windows - Taste + L).
  Diese Aktion durchzuführen ist mit einer API - Funktion im Prinzip ganz einfach. Wie immer ist zum Einbinden von API - Funktionen folgende using - Direktive nötig:
  Mit folgendem Code wird dann die benötigte Funktion eingebunden:
  LockWorkStation() kann dann an einer beliebigen Stelle des Quellcodes aufgerufen werden, der Computer wird dabei gesperrt.
  Eingestellt von Oliver S um 23:46 Kommentare:
  Eingestellt von Oliver S um 13:05 Kommentare:
  Viele kennen wahrscheinlich den Befehl ping aus der Windowskonsole. Mit diesem können testweise Datenpakete an eine bestimmte Adresse, an einen Computer im Netzwerk oder einen Server im Internet, gesendet werden.
  Können die Datenpackete erfolgreich gesendet werden ist die Zieladresse erreichbar und eine entsprechende Antwort wird zurückgegeben.
  Mit der Programmiersprache C# lässt sich solch eine Anfrage ebenfalls ganz leicht senden. Zuerst müssen wir im Projekt die dafür benötigte Klasse mittels using einbinden:
  Über die Funktion Send() der Klasse Ping kann ein Ping ausgeführt werden, die hier verwendete Überladung mit nur einem Parameter gibt die Zieladresse an (127.0.0.1 bezeichnet den lokalen Computer). Optional können weitere Parameter benutzt werden, gibt man einen 2. Parameter an, bezeichnet dieser beispielsweise das Zeitintervall in Millisekunden, in welchem auf Rückantwort gewartet werden soll.
  Eingestellt von Oliver S um 18:32 Kommentare:
  Mit der Überschrift können vielleicht nicht viele Leute etwas anfangen, umgangssprachlich geht es in diesem Post darum, mit C# abzufragen, ob "der Computer 32-Bit oder 64-Bit ist".
  Diese Angabe, 32- oder 64-Bit, bezeichnet aber informatisch gesehen die Wortbreite der Systemarchitektur, also die Grundgröße der Datenverarbeitung.
  Bei einer n-Bit Architektur besteht die Wortbreite aus n-Bit, das System teilt alle Informationen in Wörter aus n-Bit und führt mit diesen Operationen durch. Je größer die Wortbreite ist, desto mehr Informationen können pro Zeiteinheit verarbeitet werden.
  Aber genug der Theorie, in C# reicht eine Zeile zum Auslesen dieser Systeminformation:
  Eingestellt von Oliver S um 20:35 Keine Kommentare:
  Möchte man mit C# die Anzahl der im Computer befindlichen Prozessorenkerne herausfinden, reicht ein Befehl aus der Klasse Environment, die Eigenschaft ProcessorCount gibt diesen Wert zurück:
  int NrOfProcessors = Environment.ProcessorCount; // ermittelt die Anzahl der im PC verfügbaren Prozessoren
  Eingestellt von Oliver S um 22:02 Keine Kommentare:
  Basierend auf den vorigen Posts bleiben wir bei netten Funktionen des Windows API Codepacks. Eine weitere neue Funktion von Windows 7 ist das Einblenden von sogenannten Overlay Icons in der Taskleiste. Diese werden über das eigentliche Programmicon eingeblendet und können so Statusinformationen anzeigen, wie z.B. das rote "X" im Beispiel:
  Um Icons dieser Art einblenden zu können, ist die Einbindung des Windows API Code Pack nötig, wie im vorigen Post beschrieben.
  Dann führt folgender Code zur Einblendung eines Overlay Icons in der Taskleiste:
  Die Funktion SetOverlayIcon() legt hierbei schließlich das anzuzeigende Icon fest, als ersten Parameter kann ein beliebiges Icon übergeben werden, als zweiten einen Text, der alternativ zum Icon angezeigt wird, falls dieses nicht verfügbar ist.
  Folgender Code blendet das Overlay Icon wieder aus:
  Eingestellt von Oliver S um 21:20 Keine Kommentare:
  Art des Programmicons in der Taskleiste bei Windows 7 ändern
  Im vorigen Post ging es um das Anzeigen eines Fortschrittbalkens in der Taskleiste, in diesem Post möchte ich die Verwendung einer ähnlichen Funktion zeigen, die neu in Windows 7 ist.
  Windows 7 zeigt nicht nur Fortschrittsbalken in der Taskleiste an, sondern die Programmicons geben auch Aussage über den Zustand der Programme. Am nützlichsten finde ich die beiden Statusse "Fehler" und "keine Rückmeldung", folgender Code zeigt deren Verwendung (wie im vorigen Post beschrieben, wird die Einbindung des Windows API Code Packs vorrausgesetzt):
  Wird obiger Code ausgeführt, zeigt das Programm einen Fehler an, das entsprechende Icon wird leicht rot gefärbt:
  Ebenfalls kann das Programm als "hängend" deklariert werden, dann bewegt sich ein grüner Balken über das Programmicon, was vielen sicherlich bekannt vorkommmen sollte:
  Eingestellt von Oliver S um 16:19 Keine Kommentare:
  Fortschrittsbalken in der Taskleiste bei Windows 7 anzeigen
  Windows 7 bringt viele nette Features mit, eines davon sind die dynamischen Logos in der Taskleiste, die Auskunft über den Status der Programme geben können.
  In diesem Post möchte ich euch zeigen, wie man in der Taskleiste eine Fortschrittsanzeige im Programmicon einblendet, was ungefähr so aussieht:
  Um den Fortschrittsbalken zu erstellen, muss das Windows Windows API Code Pack installiert sein.
  Ist das der Fall, müssen wir in das gewünschte Zielprojekt 2 Verweise einfügen:
  Projekt - Verweis hinzufügen, zur Registerkarte Durchsuchen wechseln und dort in das Verzeichnis wechseln, in dem das Code Pack liegt.
  Weiter in der Ordnerstruktur geht es in das Unterverzeichnis WindowsAPICodePack\Shell. Hier liegen unsere benötigten .dll - Dateien, und zwar müssen Microsoft.WindowsAPICodePack.dll und Microsoft.WindowsAPICodePack.Shell.dll eingebunden werden.
  Dann binden wir in unserem Projekt die Taskbar - Klasse ein:
  Der folgende Code erstellt dann einen halb gefüllten Fortschrittsbalken wie oben im Bild ersichtlich:
  SetProgressState() legt den Stil des Programmicons fest, mit dem hier gewählten befehlen wir dem Prorgamm, das Logo ganz "normal" aussehen zu lassen, sodass wir einen Fortschrittsbalken darüber legen können.
  SetProgressValue() legt schließlich den Fortschritt der Anzeige fest, der erste übergebene Parameter ist der aktuelle Wert der Anzeige, der zweite der maximale Wert.
  Eingestellt von Oliver S um 12:17 Kommentare:
  Eingestellt von Oliver S um 19:56 Kommentare:
  Das folgende Snippet zeigt, wie man mit C# die Zeit auslesen kann, die der Computer schon läuft, sprich die Zeit seit dem Starten des PCs.
  Über System.Environment.TickCount kann diese Angabe in Millisekunden ausgelesen werden.
  Das Beispiel wandelt die Millisekundenanzahl dann in ein Objekt des Typs TimeSpan um. Diese Klasse verwaltet Zeitdifferenzen, so kann die Millisekundenanzahl leicht in Stunden, Minuten und Sekunden umgewandelt werden:
  int MsSinceStartup = System.Environment.TickCount; // Zeitintervall seit Hochfahren in Millisekunden
  TimeSpan TimeDifference = new TimeSpan(0,0,0,0, MsSinceStartup); // Erstellung einer TimeDifference zur Umwandlung in Stunden, Minuten und Sekunden
  MessageBox.Show("Zeit seit Hochfahren: " + TimeDifference.Hours + "h " + TimeDifference.Minutes + "min " + TimeDifference.Seconds + "s"); // Ausgabe