C# API unter Windows 7, 8 und 8.1

Mit der Einführung von Windows 7 hat Microsoft mehrere neue und erweiterte API Funktionen bereitgestellt, die Entwickler auch in eigenen Anwendungen verwenden können. Während Funktionen wie Hyper-V oder Multitouch nicht unbedingt für jede Anwendung geeignet sind, gibt es andere, die jede Anwendung sinnvoll erweitern. In diesem Beitrag möchte ich mich auf die API-Funktionen für die Windows Taskbar und die neuen Dialoge konzentrieren, welche meiner Ansicht nach in jeder Anwendung sinnvoll sind und bestehende Funktionen erweitern.

Da diese Art der neuen Funktionalitäten leider bisher nicht den Weg in das .NET-Framework gefunden hat, muss hierfür das Package mittels NuGet nachträglich eingbunden werden. Hier kann in der Online-Bibliothek nach „Windows 7 API Code Pack“ gesucht werden. Mehr Informationen hier finden Sie hier: http://archive.msdn.microsoft.com/ Weiterlesen

Netzwerkauslasung auslesen

Seit Windows 8 gibt es über den TaskManager sehr nützliche Auswertungen zur Auslastung von CPU, RAM, Festplatten sowie dem Netzwerk. Diese in C# nachzubauen ist gar nichtmal schwer, da es im .NET-Framework bereits dafür vorgesehene Klassen und somit Implementierungen gibt. Im Falle der Netzwerkauslastung ist es jedoch so, dass keine Zuordnung zwischen IP-Adressen und Auslastung besteht wie es im TaskManager der Fall ist. Um diese Erweiterung zu implementieren, muss man im Rahmen des .NET-Frameworks einen kleinen Umweg bemühen. Weiterlesen

Einen PHP-SOAP-Webservice erstellen und verwenden

Zum Erstellen eines SOAP-Webservices unter PHP gibt es einige Möglichkeiten. Eine davon wäre sicherlich bei Null zu beginnen und alles selbstständig zu programmieren. Eine andere Möglichkeit wiederrum ist die Verwendung von NuSoap; dies werde ich auch hier in diesem Beitrag tun. Was benötigt man zunächst einmal für einen NuSoap-PHP-Webservice? Nun zunächst einmal benötigt man einen Webspace auf dem PHP läuft und auch eine Datenbank wie z.B. MySQL ist an dieser Stelle hilfreich. Verwendet werden kann der Webservice anschließend in jeder SOAP-kompatiblen Programmiersprache. Ich werde hierfür C# verwenden.

Für den ersten Schritt sollten wir uns die Library für NuSoap herunterladen. Dies ist unter folgender URL möglich: http://sourceforge.net/projects/nusoap/ . Hier wird ausschließlich der „lib“-Ordner für die Referenzierung benötigt. Diesen packen wir auch direkt auf unseren Webserver, auf dem später der Webservice laufen soll. Weiterlesen

Laptop oder Tablet? Erkennen und richtig Handeln!

Durch Windows 8 ist eine ganz neue Form von „mobilen“ Anwendungen auf den Markt gekommen. Die Windows 8 Apps. Ebenso kamen Systeme dazu, die sowohl Tablet als auch Laptop sind und ebenso welche, die beides sein und sich zur Laufzeit ändern können. Passend dazu kamen auch relativ zeitnah die ersten Anwendungen, die auf dieses Verhalten entsprechend reagieren und sich mit jeweils einer anderen angepassten Oberfläche zur Schau stellen.

Die hierfür notwendige API gibt es leider bei Intel nur für C++. Aber mithilfe von P/Invoke kann dies auch ganz einfach mit C# und WPF verwendet werden.

Weiterlesen

Ein Webservice aufbauen und in einer Anwendung nutzen (Grundlegendes)

Webservices werden in der heutigen Zeit immer wichtiger und diese bieten auch für viele Applikation einige nette Dienste, wie z.B. die Validierung einer Seriennummer, abfragen von Updates und mehr. Aber was benötigt man hierfür? Ich verwende für diesen Fall in der Regel einen C# .NET SOAP-Service, der einen IIS sprich einen Windows-Server benötigt. Eine ebenfalls – wie ich finde – sehr gute Alternative ist ein Webservice in PHP mit z.B. NuSOAP, der ohne Windows-Server Systeme auskommt und deswegen auch in der Regel relativ beliebt ist. Und genau mit diesen beiden werden wir uns befassen. Zunächst werde ich im nächsten Teil den IIS-Webservice erläutern, wie dieser zu erstellen ist usw. und im folgenden Teil den PHP-Webservice. Im letzten anschließenden Abschlussteil werde ich einen der beiden referenzieren und nutzen (da bei beiden Services die Nutzung gleich ist und mir derzeit nur ein Linux-Server zur Verfügung steht, wird dies auf NuSOAP mit PHP hinauslaufen).

Aber was sind die Vor- und Nachteile eines solchen Services? Nun die Vorteile sind ganz klar, dass die Anwendung nur kontrollierte Dinge tut und auch die Validierung von Seriennummern etc. sicher abläuft. Natürlich sollte man die Verbindung zum Webservice auch noch per SSL absichern, aber dies ist ein eigenes Thema für sich. Es könnte aber gut sein, dass dies ebenfalls bald kommt. Einer der Nachteile ist mit Sicherheit, dass die Verbindung zum Service notwendig ist und somit eine Lokale- oder Ethernetschnittstelle vorhanden sein muss. Natürlich kann man dies aber auch umgehen und den Service mehr optional als erforderlich gestalten.

Die kleinen Tricks in C# / .NET

Unter C# bzw. dem .NET-Framework gibt es einige kleine Tricks, mit denen man den Sourcecode noch weiter optimieren kann. Aufgrund dessen, dass diese evtl. nicht jedem bekannt sind, werde ich hier nun einige die ich als nützlich erachte auflisten.

Inkrement sowie Dekrement Operator Position
Abhängig von der Position des Inkrement bzw. Dekrement Operators wird ein anderer Effekt ausgelöst. Sehen wir uns dies einmal im Code an, damit jeder weiß was ich meine.

int value = 0;
Console.WriteLine(value++); //Output wird 0 sein. 

value = 0;
Console.WriteLine(++value); //Output wird 1 sein.

Hier steht der Operator einmal vor und einmal hinter der Variable. Und dies führt zu unterschiedlichen Effekten. Hier gilt, wenn der Operator vor der Variable steht wird vor dem Zugriff das Inkrement / Dekrement durchgeführt. Steht es dahinter erst nach dem Zugriff. Weiterlesen

Simpler SplashScreen in WPF/C#

Um unter WPF/C# einen simplen SplashScreen anzuzeigen, benötigt es keinerlei Zusätze, außer einer Grafik die angezeigt werden soll. Es ist nicht einmal erforderlich ein eigenes Fenster zu erstellen – insofern keine komplexen Sachen wie Fortschrittsanzeige etc. gewünscht sind (hierfür kann folgendes verwendet werden: http://www.codeproject.com/Articles/38291/Implement-Splash-Screen-with-WPF). Für eine einfache Anzeige hingegen benötigt es nur eine Referenz auf den „System.Windows“ Namespace und schon kann in der „OnStartup“-Methode der App.xaml.cs ein SplashScreen angezeigt werden.

SplashScreen splash = new SplashScreen("SplashScreenImagePath.Type");
splash.Show(true);

Dies genügt bereits, um den SplashScreen anzeigen zu können. Das „true“ in der „Show“-Methode sorgt hierbei für ein Auto-Close, sobald das Hauptfenster angezeigt wird, andernfalls kann mittels „Close“-Methode das schließen ausgelöst werden.

Async und Await in .NET 4.0

Vielen dürften inzwischen die geliebten Schlüsselwörter „async“ und „await“ ein Begriff sein. Diese haben die asynchrone Programmierung unter .NET sehr stark vereinfacht sind jedoch leider erst im neusten Framework standardmäßig verfügbar – dem .NET 4.5. Seit Mitte April gibt es aber hierfür nun eine Abhilfe, welche es immerhin ermöglicht diese Funktionalität unter .NET 4.0 bereits zu verwenden. Denn das größte Problem des .NET 4.5 ist, die nicht vorhandene Kompatibilität zu dem immer noch stark verbreitetem Windows XP.

Wie das Ganze zu nutzen ist, kann eigentlich der NuGET Galerie entnommen werden. Denn nach der Installation funktioniert dies wie bereits unter .NET 4.5. Der Link zum entsprechenden NuGET Galerie Eintrag ist am Ende des Posts zu finden. Es ist jedoch eigentlich nichts weiter nötig als das Package „Microsoft.Bcl.Async“ zu installieren, welches über die NuGET Paketverwaltung oder über die Paket-Manager-Konsole mit folgendem Befehl erfolgt:

Install-Package Microsoft.Bcl.Async

Weiterlesen

Zeichenketten Verschlüsselt im Arbeitsspeicher

Wer sieht schon gerne seine Daten als Klartext im Speicher, so dass diese von jedem Programm genutzt werden können? Seit .NET 2.0 gibt es für Zeichenketten eine Abhilfe, denn die Klasse „SecureString“ sorgt genau dafür, dass die Daten mithilfe der DPAPI (Data Protection API) verschlüsselt im Speicher laden. Diese API sorgt dafür, dass die Daten erst beim erneuten Zugriff durch das ablegende Programm entschlüsselt werden. Um dies zu erzielen, kann eine einfache Methode implementiert werden, welche aus einem String ein SecureString Object erzeugt.

Zunächst einmal benötigen wir zwei Using-Directives, um die nötigen Methoden zur Verfügung gestellt zu bekommen. Diese wären Folgende:

using System.Security; 
using System.Runtime.InteropServices;

Anschließend können wir nun die Methode implementieren. Bevor wir dies jedoch tun, sollten wir in unserem Projekt die Verwendung von unsicherem Code zulassen, dies geschieht über die Projekteigenschaften. Weiterlesen

Interessanter .NET-Blog

Ein neuer, dennoch bereits jetzt hochinteressanter Blog hat vor wenigen Tagen das Licht der Welt erblickt. Der Autor bringt hier bis jetzt zwar ausschließlich Themen aus dem Bereich „WPF“ zum Vorschein, dies jedoch in wirklich kurzen Abständen. So haben sich zwischen dem 16. und 22. Mai bereits 8 Beiträge zu interessanten und vor allem sehr hilfreichen Themen angesammelt. Jeder der an diesen Beiträgen Interesse hat, kann nun folgendem Link folgen: http://xp-development.blogspot.de/