Windows 7 – Multitouch

February 4th, 2010

Microsoft Surface

Heute habe ich mir für das Video des Tages Unterstützung von unserem User Experience-Evangelisten Clemens Lutsch geholt. Er ist ein Experte auf dem Gebiet der neuartigen Benutzeroberflächen. Er befasst sich seit der ersten Stunde mit Microsoft Surface, einem Tisch, der über eine Oberfläche bzw. eine Tischplatte verfügt, mit der man sämtliche Interaktionen steuern kann. Die gesamte Interaktion wird über grafische Elemente, Bluetooth-fähige Geräte oder aber mit den Händen vorgenommen. Spannend dabei ist, dass man gleichzeitig mit nahezu beliebig vielen Händen und Fingern mit dem Tisch interagieren kann. Ein einfaches Beispiel ist die zeitgleiche Betrachtung von Bildern durch verschiedene Benutzer. Jeder kann Bilder auf dem Tisch ansehen, heranziehen, vergrößern, drehen und sortieren. Im Prinzip fast genauso, wie man es von herkömmlichen Fotoabenden mit Familie und Freunden gewohnt ist. Aber haben sie schon mal versucht ein klassisches Foto auf dem Tisch zu vergrößern, um die Details genauer zu betrachten? Ja, so etwas funktioniert nur mit dem Surface.

surface

Ganz ehrlich, der Surface ist wegen der integrierten Hardware und der enorm wuchtigen Tischplatte, nicht ganz preiswert und derzeit nur über Microsoft direkt zu beziehen – beim Multimedia-Fachhändler um die Ecke steht er also noch nicht zur Verfügung. Allerdings kann ich jedem empfehlen, mal in den O2-Flagship-Store in Köln zu gehen, dort haben Partner von Microsoft eine Lösung für O2 erstellt, die echt „Wow“ ist.

Was hat Surface mit Windows 7 gemeinsam?

Während der Entwicklung von Windows 7 hat man sehr eng mit dem Surface-Team zusammengearbeitet und dieses Know-How in das neue Betriebssystem einfliessen lassen. Das große Geheimnis von Surface ist eigentlich, dass das darunterliegende Betriebssystem „nur“ Windows Vista Business ist, angereichert mit einigen Kameras für die Erkennung der Finger, Hände oder sonstigen Eingabegeräte. Zusätzlich gibt es noch diverse Treiber für die Eingabe sowie Software, die die Oberfläche von Surface ausmacht. Diese Software ist, etwas einfach formuliert, nur WPF (Windows Presentation Foundation) mit speziellen Steuerelementen. Für den „normalen“ Entwickler heißt das, er kann eigentlich sofort für Surface programmieren. Die Entwicklungswerkzeuge sind die gleichen, wie für Silverlight und WPF, nämlich Expression Studio und/oder Visual Studio.

In Windows 7 ist die Möglichkeit eingeflossen, den Computer über den Bildschirm mit Hilfe von Fingern zu steuern. Es gibt bereits eine Vielzahl von Computern und Notebooks, die sich mit einem Finger steuern lassen. Darüber hinaus gibt es derzeit schon eine überschaubare Anzahl von Computern, die sich schon mit zwei oder mehreren Fingern gleichzeitig steuern lassen. Wieviele gleichzeitige Eingaben unterstützt werden, ist von der Display-Hardware und damit vom Hersteller direkt abhängig.

Was hat man unter Windows 7 von Multitouch?

Eine nette Anekdote zum Thema Multitouch: Die Steuerelemente auf der Taskleiste sind wesentlich größer geworden. Der Grund dafür liegt in der natürlichen Beschaffenheit von menschlichen Fingern. Haben SIe schon einmal probiert, die kleinen Symbole der Windows Vista- oder Windows XP-Oberfläche in der Taskleiste mit dem Finger präzise zu treffen? Selbst mit einem Stift (von Tablet PCs) ist das eher ein Geschicklichkeitsspiel als ein präzises Arbeiten. Jetzt lassen sich die neuen Steuerelemente auch einfach mit dem Finger treffen und steuern.

Anwendungen, die die Basisfunktionen aus dem Betriebssystem unterstützen, wie z.B. das Vergrößern und Verkleinern, sind bereits sehr gut für Mutlitouch ausgelegt. Durch das auseinanderziehen zweier Fingern kann man beliebige Dokumente, die diese Funktion unterstützen, vergrößern oder verkleinern. Hinzu kommt die Fähigkeit der Anwendungen, natürliches Feedback zu geben, gelangt man z.B. an das Ende eines Dokumentes, so „bounced“ dieses (Bouncen heißt so viel wie „kurz über das Ziel hinausfahren und wieder zurückzukommen“). Damit erhält der Benutzer tatsächlich das Gefühl von „Ich bin am Ende des Dokumentes angekommen“. Aber auch die Docking-Funktionen von Windows sind hervoragend auf Multitouch eingestellt: bewegt man ein Fenster mit dem Finger an eine Bildschirmseite, so dockt es dort automatisch an.

Eine andere Anekdote ist, dass sich die Open Source Gemeinde um einen Browser damit rühmt, jetzt auch Multitouch unter Windows 7 zu unterstützen. Leider haben die Kollegen nicht mitbekommen, dass das ein fester Bestandteil von Windows 7 ist und sofort „ohne Code“ von jeder Anwendung automatisch verwendet werden kann.

Es gibt bereits eine Vielzahl von Anwendungen, die Multitouch direkt verwenden. Microsoft selbst liefert ein Beispielpaket aus, das Multitouch Pack, das aus einigen Spielen, Visualisierungsdemonstrationen und Surface Globe besteht. So kann man mit dem Surface Globe sehr leicht die Welt mit den eigenen Fingern erkunden.

image

Anwender ohne ein Multitouch-fähiges Gerät müssen aber nicht zurückstecken, die Anwendungen lassen sich zumindest starten und größtenteils auch mit der Maus steuern, wenn auch nicht ganz so komfortabel.

image

Wie kann man nun eigene Multitouch-fähigen Anwendungen entwickeln?

Auf MSDN-Online gibt es dazu einen sehr guten Webcast.

In diesem Webcast zeigt Ihnen Dariusz Parys, wie Sie Anwendungen für Windows 7 multi-touch-fähig machen. Unter anderem erfahren Sie, wie man einen Emulator installiert, um Multi-Touch zu simulieren, welche Gesten standardmäßig in Windows 7 unterstützt werden und wie man eine WPF-Anwendung um Multi-Touch-Funktionalität erweitert.

Link zum Webcast

Weitere technische Dokumentation zur Multitouch-API gibt es hier:

Yochay Kriaty – Multitouch-Funktionen in Windows 7

The-Oliver Deutsch, Developer, Windows

Windows 7 – Eigene Explorer basierende Anwendungen entwickeln

February 4th, 2010

Heute kommen die Fans des Windows Explorer voll auf ihre Kosten. Er verfügt im Prinzip über alle wichtigen Funktionen, die man für die Navigation durch Ordner, Netze, Dateien, Bibliotheken und Suchen benötigt. Der Windows Explorer ist das Ergebnis jahrelanger Entwicklungsarbeit und spiegelt dabei die Implementierung vieler Bedürfnisse des Standardbenutzers wieder. Wer dennoch Funktionen braucht, die nicht enthalten sind, oder diese gerne auf andere Art und Weise implementieren möchte, darf dies gerne tun.

Die Funktionen des Windows Explorer stehen jedem Entwickler frei zur Verfügung. Dank des Windows API Code Packs lässt sich der Explorer in Windows Forms- oder Windows Presentation Foundation-Anwendungen integrieren.

Die Funktionen und die Visualisierung steht in Form von Steuerelementen direkt in Visual Studio zur Verfügung. Der Name der Steuerelemente ist sowohl in Windows Forms als auch in WPF ExplorerBrowser.

clip_image002

Die Konfiguration ist ebenfalls sehr leicht über das Eigenschaften-Fenster möglich.

Zwei Referenzimplementierungen sind direkt im Windows API Code Pack enthalten. Sie demonstrieren einfach und kompakt die volle Leistungsfähigkeit und sehen dabei sehr technisch aus. Meine Bitte an Sie, bitte bauen sie so etwas nicht, sondern machen sie es dem Benutzer leicht. J

clip_image004

Die WPF-Variante zum Testen der ExplorerBrowser-Funktionen.

clip_image006

Die Windows Forms-Variante zum Testen.

The-Oliver Deutsch, Developer, Windows

Windows 7 – Suchen über die Windows Shell

February 4th, 2010

Ein altes Sprichwort sagt: „Wer suchet, der findet.“. Warum lassen wir nicht unsere eigenen Anwendungen suchen? Windows 7 liefert die notwendige Search API dafür mit.

Um die Search API aus .NET-Code ansprechen zu können, ist wirklich nicht viel nötig. Man muss lediglich das Windows API Code Pack einbinden und schon kann in wenigen Zeilen der eigene Suchclient entwickelt werden.

Was man sucht und vor allem wo man sucht, ist jedem Entwickler selbst überlassen. Die Qualität der Suche hängt aber wesentlich von diversen Kriterien ab: So ist es ziemlich sinnlos nach Liedern ihrer Lieblingsband im System-Ordner von Windows zu suchen. Und Bilder vom letzten Firmenfest werden sie nicht in ihren Musikordnern finden. Es sei denn, sie haben eine sehr interessanten Organisationsstil.

Aus gutem Grund bietet die API daher auch die nötigen Konfigurationswerkzeuge für die Suche an. In welchen Typen von Ordner soll gesucht werden? Was für Daten suchen wir? Sollen alle Suchbegriffe oder zumindest ein Suchbegriff im Dokument gefunden werden? Handelt es sich um aktuelle Daten oder vor langer Zeit angelegte Dokumente?

Eine eigene Suchanwendung ist sehr schnell implementiert. Dafür sind lediglich zwei Bibliotheken aus dem Windows API Code Pack notwendig:

image

Die Methode zum Suchen:

private void StartSearch(string searchText)
{
// Erzeuge Suchbedingungen
SearchCondition searchCondition =
GetSearchCondition(searchText);
// Datum als weiteres Suchkriterium hinzufügen
SearchCondition dateCondition =
SearchConditionFactory.CreateLeafCondition(
SystemProperties.System.Title,
searchText,
SearchConditionOperation.ValueContains);
// Zusammensetzen der Suchbedingungen
SearchCondition finalSearchCondition =
SearchConditionFactory.CreateAndOrCondition(
SearchConditionType.Or,
false,
searchCondition,
dateCondition);

// Erzeuge einen ShellSearchFolder
ShellSearchFolder searchFolder;
if (ShellLibrary.IsPlatformSupported)
{
searchFolder = new ShellSearchFolder(
finalSearchCondition,
(ShellContainer)KnownFolders.DocumentsLibrary,
(ShellContainer)KnownFolders.PicturesLibrary,
(ShellContainer)KnownFolders.VideosLibrary);
}
else
{
searchFolder = new ShellSearchFolder(
finalSearchCondition,
(ShellContainer)KnownFolders.Documents,
(ShellContainer)KnownFolders.Pictures,
(ShellContainer)KnownFolders.Videos);
}

// DataList die die Ergebnisse anzeigt
_result.ItemsSource = searchFolder;
}

Die Methode GetSearchCondition ist folgendermaßen implementiert:

private SearchCondition GetSearchCondition(string searchText)
{
// Einzelne Suchbegriffe aus dem Textbilden
string[] words = searchText.Split(’ ‘);
// Das Suchergebnis ist erstmal leer
SearchCondition combinedPropertyCondition = null;
// Für jedes Word im Suchtext eine Suchbedingung erzeugen
foreach (string word in words)
{
// Erste Suchbedingung –> Suche nach Dateinamen
SearchCondition propertyCondition1 =
SearchConditionFactory.CreateLeafCondition(
SystemProperties.System.FileName,
word,
SearchConditionOperation.ValueContains);
// Zweite Suchbedingung –> Suche nache Keywords/Tags in Datei
SearchCondition propertyCondition2 =
SearchConditionFactory.CreateLeafCondition(
SystemProperties.System.Keywords,
word,
SearchConditionOperation.ValueContains);
// Wir wollen eine Oder-Bedingung für Tags oder Dateiname
SearchCondition tmpCombinedCondition =
SearchConditionFactory.CreateAndOrCondition(
SearchConditionType.Or,
false,
propertyCondition1,
propertyCondition2);

// Falls es bereits eine Suchbedingung gibt,

// verknüpfe die neue und die alten mit AND
if (combinedPropertyCondition != null)
{
combinedPropertyCondition =
SearchConditionFactory.CreateAndOrCondition(
SearchConditionType.And,
false,
combinedPropertyCondition,
tmpCombinedCondition);
}
else
{
combinedPropertyCondition = tmpCombinedCondition;
}
}
return combinedPropertyCondition;
}

Die Suche an sich wird über die Klasse ShellSearchFolder ausgeführt. Die Definition der Suchanfrage erfolgt über die SearchConditions. Welche Ordner durchsucht werden sollen, wird mit Hilfe von „KnownFolders“, so genannten bekannten Ordner definiert.

searchFolder = new ShellSearchFolder(
finalSearchCondition,
(ShellContainer)KnownFolders.DocumentsLibrary,
(ShellContainer)KnownFolders.PicturesLibrary,
(ShellContainer)KnownFolders.VideosLibrary);

Das Suchergebnis kann man nun visualisieren wie man möchte. Ich habe mich in diesem Beispiel auf eine einfache Liste beschränkt. Im Windows API Code Pack steht dazu eine vollwertige WPF-Visualisierung zur Verfügung.

The-Oliver Deutsch, Developer, Windows

Windows 7 – Restart- und Recovery-API

February 4th, 2010

Meine Programme stürzen nicht ab! Nein ganz bestimmt nicht! Versprochen! Großes Indianer-Ehrenwort!

Aber falls es doch mal passiert, dass eine Anwendung „abstürzt“, bzw. einfach nicht das tut, was man von ihr erwartet, dann kann man das jetzt stilvoll und mit einem automatischen Neustart der Anwendung geschehen lassen. Hierbei hilft die Restart-And-Recovery-API, die bereits in Windows Vista eingeführt und nun in Windows 7 erweitert wurde.

Jeder von uns war bestimmt schon einmal in der Situation, dass er lange an einem Dokument gearbeitet hat bis die Anwendung plötzlich einfach abgestürzt ist. Die Anwendung reagiert einfach nicht mehr und alle Daten sind verloren. Vielleicht haben sie es auch schon einmal gesehen, dass einige Anwendungen nach einem Absturz anbieten, direkt wieder neu zu starten. Und im Startvorgang werden dann die verloren geglaubten Daten wiederhergestellt. Benutzer solcher Anwendungen können sich glücklich schätzen.

clip_image002

Die Anwendung läuft noch ….

clip_image004

Ups, die Anwendung funktioniert nicht mehr.

clip_image006

Und startet sich von selbst neu.

clip_image008

Eine quasi sich selbst regenerierende Anwendung kann jeder mit Hilfe der Restart-And-Recovery-API erstellen. Es sind nur wenige Schritte dazu notwendig:

Schritt 1: Registrieren der Anwendung für einen Restart

private void RegisterForRestart()
{
ApplicationRestartRecoveryManager.RegisterForApplicationRestart(
new RestartSettings("/restart",
RestartRestrictions.NotOnReboot | RestartRestrictions.NotOnPatch));
}

Schritt 2: Registrieren der Anwendung für die Wiederherstellung von Daten

private void RegisterForRecovery()
{
RecoveryData data = new RecoveryData(new RecoveryCallback(RecoveryProcedure), null);
RecoverySettings settings = new RecoverySettings(data, 0);
ApplicationRestartRecoveryManager.RegisterForApplicationRecovery(settings);
}

Schritt 3: Implementieren der Recovery-Methode

private int RecoveryProcedure(object state)
{
PingSystem();

File.WriteAllText(RecoveryFile, string.Format("{1}{0}{2}{0}{3}", DataSeparatorString, CurrentFile.Filename, CurrentFile.IsDirty, CurrentFile.Contents));

Debug.WriteLine("File path: " + RecoveryFile);
Debug.WriteLine("File exists: " + File.Exists(RecoveryFile));
Debug.WriteLine("Application shutting down…");

ApplicationRestartRecoveryManager.ApplicationRecoveryFinished(true);
return 0;
}

Schritt 4: Prüfen, ob der Benutzer den Restart abgebrochen hat

private void PingSystem()
{
// Find out if the user canceled recovery.
bool isCanceled = ApplicationRestartRecoveryManager.ApplicationRecoveryInProgress();

if (isCanceled)
{
Console.WriteLine("Recovery has been canceled by user.");
Environment.Exit(2);
}

}

Schritt 5: Daten beim Neustart wiederherstellen

private void RecoverLastSession(string command)
{
if (!File.Exists(RecoveryFile))
{
MessageBox.Show(this, string.Format("Recovery file {0} does not exist", RecoveryFile));
internalLoad = true;
textBox1.Text = "Could not recover the data. Recovery data file does not exist";
internalLoad = false;
UpdateAppTitle();
return;
}

// Perform application state restoration actions here.
string contents = File.ReadAllText(RecoveryFile);
CurrentFile.Filename = contents.Remove(contents.IndexOf(Form1.DataSeparatorString));
contents = contents.Remove(0, contents.IndexOf(Form1.DataSeparatorString) +
Form1.DataSeparatorString.Length);
CurrentFile.IsDirty = contents.Remove(contents.IndexOf(Form1.DataSeparatorString)) == "True" ? true : false;
contents = contents.Remove(0, contents.IndexOf(Form1.DataSeparatorString) + Form1.DataSeparatorString.Length);
CurrentFile.Contents = contents;

// Load our textbox
textBox1.Text = CurrentFile.Contents;

// Update the title
UpdateAppTitle();

// Reset our variable so next title updates we don’t show the "recovered" text
recovered = false;
}

Schritt 0: Die eigentliche Anwendung

public Form1()
{
Debug.WriteLine("ARR: Demo started");
InitializeComponent();
UpdateAppTitle();
RegisterForRestart();
RegisterForRecovery();

if (System.Environment.GetCommandLineArgs().Length > 1 && System.Environment.GetCommandLineArgs()[1] == "/restart")
{
RecoverLastSession(System.Environment.GetCommandLineArgs()[1]);
}
}

Das vollständige Codebeispiel befindet sich im Windows API Code Pack.

The-Oliver Deutsch, Developer, Windows

Windows 7 – Entwickeln mit und für Sensoren

February 4th, 2010

Was ist die Windows 7 Sensor API?

Die Windows 7 Sensor API ist eine neue Programmierschnittstelle für die Steuerung von Sensoren. Bei Sensoren kann es sich um interne und externe Erweiterungen des PCs handeln, die dem Computer Informationen über „äußere“ Zustände vermitteln. Die häufigsten Einsatzszenarien sind derzeit die Erkennung der Umgebungshelligkeit, der Beschleunigung des PCs selbst oder des angeschlossenen Sensors. Darüber hinaus kann man Software-Sensoren erstellen, die bestimmte Werte ermitteln und an die API übergeben und damit unseren Anwendungen bereitstellen.

Was kann man tun, wenn man keine Sensoren installiert hat?

Man muss sich nicht unbedingt einen neuen Rechner mit Sensorhardware kaufen, denn es gibt durchaus Alternativen. Das Windows 7 SDK bringt zum Beispiel einen Sensor für Licht mit. Es handelt es sich um einen Lichtsensor-Emulator, den der User über einen einfachen Schieberegler steuern kann.

Um den Treiber dafür erfolgreich im System zu installieren, muss man wie folgt vorgehen:

  1. Eine Kommandozeile mit administrativen Rechten starten (cmd.exe mit „Run as“-Option)
  2. Wechseln in den Windows SDK Bin-Ordner
  3. Eingabe von pnputil -a VirtualLightSensorDriver.inf
  4. Bei einer Nachfrage, ob der Treiber wirklich installiert werden soll, mit Ja antworten
  5. Warten bis die Meldung erscheint, dass der Treiber erfolgreich installiert wurde

Ausführen des virtuellen Lichtsensors

  1. Starten der Anwendung “VirtualLightSensor.exe” aus dem Windows SDK Bin-Ordner
  2. Bestätigen, dass der Sensor gestartet werden soll
  3. Einen Moment lang wird die Meldung „Waiting“ angezeigt. Der virtuelle Lichtssensor wird in diesem Moment als „Gerät“ installiert. Anschließend kann der Schieberegler verwendet werden, um die Lichtstärke in Lux zu simulieren

clip_image002

Programmieren mit Sensor API

Die Funktionen, um auf die Sensoren im Computer zugreifen zu können, sind über die SensorManager-Klasse erreichbar. Sie ist Bestandteil des Windows API Code Pack und kann über die darin enthaltene Bibliothek „Sensors“ eingebunden werden.

Um generell erkennen zu können, ob sich an den Sensoren etwas ändert (Aktivierung und Deaktivierung), reicht das Ereignis SensorsChanged. Um zu erkennen, welche Sensoren im System enthalten sind, kann die Methode GetAllSensors verwendet werden. Diese liefert alle Sensoren zurück, die im System derzeit aktiv sind. Jedes zurückgelieferte Objekt ist von der Klasse Sensor abgeleitet.

private void InitSensors()
{
SensorManager.SensorsChanged += new SensorsChangedEventHandler(SensorManager_SensorsChanged);

foreach (var sensor in SensorManager.GetAllSensors())
{
sensor.DataReportChanged += new DataReportChangedEventHandler(sensor_DataReportChanged);
sensor.StateChanged += new StateChangedEventHandler(sensor_StateChanged);
Debug.WriteLine(sensor.FriendlyName);
}
}

Um mit einem Lichtsensor zu arbeiten, kann man den AmbientLightSensor verwenden. Dieser verfügt über die Eigenschaft CurrentLuminousIntensity, welche die Intensität in Lux zurückliefert. Darüber kann erkannt werden, ob das aktuelle Umgebungslicht hell oder dunkel ist. Das macht besonders dann Sinn, wenn man in wechselnden Umgebungen arbeitet, wie z.B. im ICE (Tunnel, Sonnenlicht, Bahnhof, usw.). Einige Notebookhersteller haben dafür schon Sensoren im Rechner eingebaut und regeln so die Helligkeit des Bildschirms.

SensorList<AmbientLightSensor> alsList = SensorManager.GetSensorsByTypeId<AmbientLightSensor>( );
int ambientLightSensors = 0;

foreach( AmbientLightSensor sensor in alsList )
{
// set intial progress bar value
sensor.TryUpdateData( );
float current = sensor.CurrentLuminousIntensity.Intensity;
pb.Value = Math.Min( (int)current, maxIntensity );

// Set up automatc data report handling.
sensor.AutoUpdateDataReport = true;
sensor.DataReportChanged += new DataReportChangedEventHandler( DataReportChanged );
ambientLightSensors++;
}

if( ambientLightSensors == 0 )
{
// No Sensor found
}
}
catch( SensorPlatformException exc)
{
// This exception will also be hit in the Shown message handler.
}

Das Ereignis DataReportChanged wird immer dann ausgelöst, wenn sich am Sensor etwas verändert. Das geschieht asynchron als Hintergrundprozess und muss daher bei Interaktion mit dem UI-Thread wieder mit diesem synchronisiert werden. Die Umsetzung lässt sich sehr einfach mit der folgenden Ereignisbehandlung realisieren:

void DataReportChanged( Sensor sender, EventArgs e )
{
AmbientLightSensor als = sender as AmbientLightSensor;
BeginInvoke( new MethodInvoker( delegate
{
float current = als.CurrentLuminousIntensity.Intensity;
} ) );
}

Arbeiten mit Bewegungs- bzw. Beschleunigungssensoren

Inzwischen gibt es auch immer mehr Hardware mit so genannten Bewegungssensoren. Diese erkennen Beschleunigung in den drei Bewegungsachsen. Dadurch ergeben sich ganz neue Möglichkeiten der Steuerung.

Ich selbst habe ein externes Sensorboard der Firma Freescale zu Testzwecken an meinem Rechner. Damit verfügt man quasi über einen Joystick, der eine dreidimensionale Steuerung erlaubt.

Um diesen Sensor anzusprechen, benötigt nicht viel mehr Code als für Lichtsensoren.

Das Auslesen der Daten geschieht ebenfalls im DataReportChanged-Ereignis der SensorManager-Klasse:

void sensor_DataReportChanged(Sensor sender, EventArgs e)
{
Debug.WriteLine(sender.FriendlyName);
if (sender is Accelerometer3D)
{
Dispatcher.BeginInvoke(new Action(delegate
{
Accelerometer3D accel = sender as Accelerometer3D;
MoveBall(accel.CurrentAcceleration[AccelerationAxis.X],
accel.CurrentAcceleration[AccelerationAxis.Y],
accel.CurrentAcceleration[AccelerationAxis.Z]);
}));
}
}

Die Methode MoveBall macht nichts anderes als einen Ball um die übergebenen X-,Y- und Z-Koordinaten zu verschieben.

Ein schönes Beispiel ist im Windows API Code Pack enthalten. Dieses visualisiert die aktuelle Beschleunigung des Sensors in X-,Y- und Z-Richtung.

clip_image004

The-Oliver Deutsch, Developer, Windows

Windows 7 – Entwicklerresourcen

February 4th, 2010

Heute möchte ich eine kleine Zusammenfassung für Entwickler bereit stellen – für jeden der schnell und kompakt eine Übersicht über die vielen kostenfreien Angebote von Microsoft haben möchte.

Die folgenden Webseiten bieten kostenfreie Downloads oder Inhalte an, die von jedem genutzt werden dürfen, die sich gerne mit der Windows-Programmierung und im Besonderen mit Windows 7 befassen möchten.

MSDN Online –Microsoft Developer Network

Was kann man bei MSDN Online finden? Im Prinzip ist die Antwort einfach formuliert: Alles! Im Detail heißt das, dass es dort alles zu unseren Programmiersprachen (Visual Basic, Visual C++, Visual C#), unseren Werkzeugen für Entwickler (Visual Studio, Visual Studio Express, Visual Studio Team System) und unseren Betriebssystemen (Windows Client, Windows Server, Windows Mobile, Windows Embedded) zu finden gibt.

Neben Webcasts und Videos, die von Experten auf ihren Gebieten erstellt wurden, finden sich dort auch viele technische Artikel und Downloads. Man kann sich auf MSDN Online aber auch für Newsletter (http://www.microsoft.com/germany/msdn/flash/default.mspx) und RSS-Feeds (http://msdn.microsoft.com/de-de/bb821267.aspx) registrieren, die in regelmäßigen Abständen über aktuelle Themen informieren.

Außerdem findet man dort seit kurzem das sehr spannende und amüsante MSDN TV. Link: http://www.microsoft.com/germany/msdn/msdntv/default.mspx

Wer mehr über die MSDN Subscription erfahren möchte, ist dort ebenfalls hervorragend aufgehoben. Kurz formuliert handelt es sich dabei um ein Abonnement für sämtliche aktuellen und kommenden Microsoft-Produkte und -Technologien, die man uneingeschränkt als Entwickler für sich verwenden kann.
Link: http://msdn.microsoft.com/de-de/subscriptions/default.aspx

Link: http://www.msdn-online.de

Windows 7 Software Development Kit

Beim Microsoft® Windows® SDK handelt es sich um einen Satz von Tools, Codebeispielen, Dokumentationen, Compilern, Headern und Bibliotheken, mit denen Entwickler Anwendungen erstellen können, die unter Microsoft Windows-Betriebssystemen mit systemeigenen (Win32) oder verwalteten (.NET Framework) Programmiermodellen ausgeführt werden.

In den meisten Fällen sollten Sie die neueste Windows SDK-Version verwenden, die mehrere Windows-Betriebssysteme und .NET Framework-Versionen unterstützt

Link: http://msdn.microsoft.com/de-de/windows/bb980924.aspx

Blog des Windows SDK Teams: http://blogs.msdn.com/windowssdk/

Windows API Code Pack for Microsoft .NET Framework

Das Windows API Code Pack for Microsoft .NET Framework bietet eine Quellcodebibliothek an, die es ermöglicht, die neuen Windows 7 Funktionen in .NET-Anwendungen zu verwenden.

Link: http://code.msdn.microsoft.com/WindowsAPICodePack

Windows 7 Training Kit

Das Windows 7 Training Kit beinhaltet Präsentationen, Hands-on-labs und Demos, die dafür entwickelt wurden, die neuen Funktionen von Windows 7 verwenden zu können.

Link: http://www.microsoft.com/downloads/details.aspx?FamilyID=1C333F06-FADB-4D93-9C80-402621C600E7&displaylang=en

Gibt es weitere Quellen habe und die ich vergessen habe? Her damit

The-Oliver Developer, Windows

Windows 7 – Neun Dinge die jeder Entwickler über Windows 7 wissen sollte

February 4th, 2010

1. Windows 7 beinhaltet das .NET Framework 3.5 SP1

Das .NET Framework 3.5 SP1 ist in Windows 7 enthalten. Das sind gute Nachrichten:

  • Softwareverteilung: Für eine Clientanwendung heißt dies bei der Softwareverteilung, dass das .NET Framework schon auf Windows 7 Computern vorhanden ist und nicht zusätzlich installiert werden muss
  • Kompatibilität: Da Windows 7 mit dem .NET Framework 3.5 SP1 bereitgestellt wird, kann man sicher sein, dass sehr viele Integrationstests durchgeführt wurden, um das Funktionieren der .NET Runtime und Bibliotheken mit dem OS zu gewährleisten.

2. Visual Studio 2008 funktioniert problemlos mit Windows 7

Ich benutze Visual Studio 2008 zusammen mit Windows 7 auf meinen Notebook und meinem Entwicklungsdesktop und habe keinerlei Probleme. Wie gewohnt, kann man mit Visual Studio 2008 noch .NET 2.0, .NET 3.0 und .NET 3.5 SP1 Anwendungen für andere OS-Versionen, z.B. Windows XP oder Windows Vista, erstellen.

3. Man kann Anwendungen schreiben, die unter Windows XP bis Windows 7 laufen …

und die Features des Gast-Betriebssystems nutzen. Es gibt eine Beispielanwendung „PhotoView“, die demonstriert, wie man eine .NET-Anwendung schreibt, die von XP bis Windows 7 lauffähig ist und die Features der einzelnen Gast-Betriebssysteme optimal ausnutzt. Den Sourcecode und eine Beschreibung der Anwendung gibt’s unter –> http://code.msdn.microsoft.com/XP2Win7.

4. Man kann heute .NET-Anwendungen schreiben, welche die coolen Features von Windows 7 nutzen

In meinen letzten Blogeintrag habe ich die Windows 7 API Code Packs vorgestellt, mit denen man schon heute über Managed Code auf diese Features zugreifen kann –> http://blogs.msdn.com/mtcmuc/archive/2009/08/13/windows-7-codepack-v1-0-released.aspx.

Eine Reihe von weiteren Beispielen, wie man für Windows 7 entwickelt, gibt es auch im Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 –> http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en

5. Powershell ist Bestandteil von Windows 7

Für komplexe administrative Scripts und der Verwendung von Powershell aus Anwendungen haraus ist die Powershell V2.0 Bestandteil von Windows 7.

6. Es gibt einen ausführlichen Windows 7 UX Guide

Als PDF-Download gibt es einen User Interface Design Guide zu Themen wie Bildschirmauflösungen, DPIs, Windows Sizing, Controlausrichtung und Control Spacing, u.v.a.m. –> http://download.microsoft.com/download/e/1/9/e191fd8c-bce8-4dba-a9d5-2d4e3f3ec1d3/ux%20guide.pdf

7. Freie Kapitel aus Windows 7-Büchern

Es gibt einige kostenfreie Kapitel aus den Büchern "Windows 7 Inside Out", "Windows 7 Resource Kit" und "Windows 7 for Developers" zum Download –> http://www.microsoft.com/learning/en/us/offers/windows-7-chapters-thankyou.aspx

8. Windows 7 Trainingskit für Entwickler

Wie in meinem Blogeintrag http://blogs.msdn.com/mtcmuc/archive/2009/07/08/schnelleinstieg-in-die-windows-7-entwicklung-mit-dem-windows-7-trainingskit.aspx berichtet, gibt es ein Windows 7 Training Kit für Entwickler. Dieses Kit liegt nun in Version 1.0.1 vor und kann unter –->
http://www.microsoft.com/downloads/thankyou.aspx?familyId=1c333f06-fadb-4d93-9c80-402621c600e7&displayLang=en heruntergeladen werden.

9. Deutsche Windows 7 Developer Tipps

Auf http://msdn.microsoft.com/de-de/windows/dd433113.aspx gibt es viele neue Artikel, HowTo Guides, die erste Schritte auf dem neuen Betriebssystem, aber auch komplexere Windows 7-Programmierthemen ansprechen.

The-Oliver Developer, Windows

Windows 7 – Multifunktionsleiste/Ribbon

February 4th, 2010

Die Multifunktionsleiste wurde neu in Windows 7 integriert und entspricht nahezu der Multifunktionsleiste von Office 2007. Nahezu bedeutet dabei, dass sie konsequent weiterentwickelt wurde.

Windows 7 und die Multifunktionsleiste

Die Multifunktionsleiste ist in einige Klassiker eingeflossen: Paint und WordPad. Schade ist, dass sie es nicht auch in Notepad geschafft hat.

image

image

Die Multifunktionsleiste ist ebenso in Windows Live Movie Maker integriert worden. Dieser läuft auch unter Windows Vista und zeigt, dass die Multifunktionsleiste auch auf Vista verfügbar sein wird.

Entwickeln mit der Multifunktionsleiste

Windows 7 führt ein neues natives API für Multifunktionsleisten-basierte Oberflächen ein. Dieses API ist COM-basiert. Das API wird in Zukunft auch für Windows Vista verfügbar sein und nahezu den gleichen Funktionsumfang wie die Office 2007-Multifunktionsleiste haben.

Um als Entwickler die Multifunktionsleiste verwenden zu können, benötigt man das Windows 7 SDK (Link). Im SDK finden Sie unter anderem die Header-Datei (UIRibbon.h), die den Zugriff auf die Multifunktionsleiste bietet.

Die Programmierung der Multifunktionsleiste teilt sich in zwei Bereiche auf: Im Deklarationsteil werden die verschiedenen Elemente, wie z.B. Tabreiter, Gruppierungen oder Kommandos, deklariert und ihr Aussehen beschrieben. Diese Beschreibung kann mit XAML (Extensible Markup Language) geschrieben werden. Die Ausführung der Kommandos und das Wechseln in verschiedene Zustände wird über C++-Code beschrieben, der die Darstellung mit der Anwendungslogik verknüpft, der eigentlichen Anwendungslogik.

image

Dadurch erhält man eine starke Separation in Model, Sicht und Controller, die den Code und das Markup entkoppelt. Die gesamte C++-API dazu ist sehr kompakt gehalten. Sie ist auf Kommandos fokussiert und nicht auf Steuerelemente oder Darstellungsdetails.

Welche Steuerelemente bringt die Multifunktionsleiste mit

Die Multifunktionsleiste verfügt über ein sehr großes Repertoire an Steuerelementen, die wir bereits aus Paint, WordPad und dem Windows Live Movie Maker her kennen.

image

Eine Funktion die nicht direkt in der Multifunktionsleiste integriert ist, sondern an beliebigen Stellen in der Anwendung verwendet werden kann, ist das erweiterte Kontextmenü. In WordPad erscheint dies leicht transparent, wenn man einen Text markiert. Darüber kann man dann zum Beispiel den selektierten Text formatieren. Diese Funktion erspart dem Benutzer, größere Strecken mit der Maus zurückzulegen und somit seinen aktuellen Fokus (den Text) zu verlassen.

image

image

image

image

image

image

image

image

image

image

image

image

image

image

image

Markup der Multifunktionsleiste

Der Markup-Code für die Multifunktionsleiste unterteilt sich in zwei Bereiche: Command-Sektion und Views-Sektion.

Die Command-Sektion beinhaltet die einzelnen Command-Elemente: einen Referenznamen, ein Label, eine eindeutige ID, ein Bild (BMP) und einen Tooltip.

<?xmlversion="1.0" encoding="utf-8"?>
<Applicationxmlns=’http://schemas.microsoft.com/windows/2009/Scenic/Intent’>
<Application.Commands>
<CommandName=’Home’ LabelTitle=’Home’/>
<CommandName=’HomePage’ LabelTitle=’HomePage’>
<Command.LargeImages>
<ImageSource=’res/HomePageHH.bmp’/>
</Command.LargeImages>
</Command>
</Application.Commands>

Die Views-Sektion legt die Organisation der Kommandos in Tabs, Gruppen, Quick Access-Toolbar und Anwendungsmenü fest. Sie bestimmt außerdem, welches Steuerelement für welches Kommando verantwortlich ist.

<Application.Views>
<Ribbon>
<Ribbon.Tabs>
<Tab CommandName=’Home’>
<Group CommandName=’GoHomePage’ SizeDefinition=’OneButton’>
<Button CommandName=’HomePage’/>
</Group>
</Tab>
</Ribbon.Tabs>
</Ribbon>
</Application.Views>
</Application>

Die Multifunktionsleiste unterstützt zwei Arten von “Sichten”: die Multifunktionsleisten-Sicht und die kontextuelle UI-Sicht. Die kontextuelle UI-Sicht bietet ein reicheres Kontextsystem als bisherige Kontextmenüs.

Da es sich bei der Multifunktionsleiste um eine native API handelt, muss aus der XAML-Datei erst einmal eine native Ressource erstellt werden. Dies geschieht mit einem Tool aus dem Windows SDK: UICC.exe. Dieses generiert aus der XAML-Datei eine Ressource, die man wiederum in seine Anwendung einbinden kann und dadurch die Multifunktionsleiste als nativen Code vorliegen hat.

UICC.exe konvertiert XAML in ein binäroptimiertes Format und erstellt eine .rc-Datei, welche den binären “blob” mit den verwendeten Ressourcen enthält. Man sollte einen benutzerdefinierten Build-Step für die Erstellung der .rc-Datei mittels UICC.exe in sein Projekt einbauen, damit dieses automatisch während des Erstellens geschieht. Eine .h-Datei, die die #defines für die diversen Command-IDs enthält, wird ebenfalls generiert.

Anwendungsmodi

Durch Anwendugsmodi lässt sich die Darstellung von Elementen an den aktuellen Anwendungszustand koppeln, denn nicht immer soll alles sichtbar sein. In Microsoft Paint wird z.B. der Text-Tab nur angezeigt wenn man Text bearbeitet. Ansonsten wird diese Funktion nicht benötigt. Im Markup-Code definiert man die Anwendungsmodi, in denen die Elemente sichtbar sein sollen. Der Anwendungsmodus wird auf untergeordnete Steuerelemente automatisch vererbt.

<Button CommandName=’Paste’ ApplicationModes=’1,3′/>

Im Code kann man den Modus durch die Funktion IUIFrameworkSetModes ändern.

Die API-Interfaces im Überblick

  • IUIFramework – initialisiert Multifunktionsleiste, lädt Markup-Resourcen, Get und Set für Command-Eigenschaften oder State, Set Application Modes.
  • IUIApplication–Ermittelt User Command-Handler für jedes Command, welches im Markup definiert wurde. Benachrichtigt über View-State-Änderungen.
  • IUICommandHandler –Behandelt Commands und Property-Updates (z.B. Aktivieren und Deaktivieren eines Commands, basierend auf der aktuellen Sicht) .

Codebeispiel: Initialisierung

IUIFramework* g_pFramework = NULL;
::CoCreateInstance(CLSID_UIMultifunktionsleisteFramework, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&g_pFramework));
CComObject<CApplication> *pApp = NULL;
CComObject<CApplication>::CreateInstance(&pApp);
CComPtr<IUIApplication> spApp(pApp);
g_pFramework->Initialize(hWindowFrame, spApp);
g_pFramework->LoadUI(GetModuleHandle(NULL), L"APPLICATION_Multifunktionsleiste");

Codebeispiel: Behandeln von Ereignissen

class CApplication :
public CComObjectRootEx<CComMultiThreadModel>,
public IUIApplication,
public IUICommandHandler
{
public:
BEGIN_COM_MAP(CApplication)
COM_INTERFACE_ENTRY(IUIApplication)
COM_INTERFACE_ENTRY(IUICommandHandler)
END_COM_MAP()

STDMETHOD(OnSichtChanged)(UINT32 nSichtID,
__in UI_SichtTYPE typeID, __in IUnknown* pSicht,
UI_SichtVERB verb, INT32 uReasonCode)
{ return E_NOTIMPL; }
STDMETHOD(OnCreateUICommand)(UINT32 nCmdID,
__in UI_COMMANDTYPE typeID,
__deref_outIUICommandHandler** ppCmdHndlr)
{ return QueryInterface(IID_PPV_ARGS(ppCmdHndlr)); }
STDMETHOD(OnDestroyUICommand)(UINT32 commandId,
__in UI_COMMANDTYPE typeID,
__in_optIUICommandHandler* pCommandHandler)
{ return E_NOTIMPL; }
STDMETHODIMP Execute(UINT nCmdID,
UI_EXECUTIONVERB verb,
__in_opt const PROPERTYKEY* key,
__in_opt const PROPVARIANT* ppropvarValue,
__in_optIUISimplePropertySet* pCmdExecProps)
{
if (verb == UI_EXECUTIONVERB_EXECUTE
&& nCmdID == HomePage)
MessageBox(NULL, L"Clicked on HomePagebtn”, L"HomePage Button Execute“, MB_OK);
return S_OK;
}
STDMETHODIMP UpdateProperty(UINT nCmdID,
__in REFPROPERTYKEY key,
__in_opt const PROPVARIANT* ppropvarCurrentValue,
__out PROPVARIANT* ppropvarNewValue)
{
if (key == UI_PKEY_Enabled &&
nCmdID == HomePage && m_bPressed)
{
return UIInitPropertyFromBoolean(
UI_PKEY_Enabled, FALSE, ppropvarNewValue);
}
return E_NOTIMPL;
}

Ein vollständiges Beispiel befindet sich im Windows 7 SDK (Link).

The-Oliver Deutsch, Developer, Windows

Windows 7 – Entwickeln mit der neuen Taskleiste

February 4th, 2010

Die Taskleiste in Windows 7 hat eine lange Geschichte hinter sich.

Geschichte der Taskleiste

In Windows 1 gab es die Taskleiste noch nicht, es gab lediglich einfache Symbole am unteren Rand. Man konnte die Symbole noch nicht einmal verschieben. Aber der Kenner weiß, dass bereits in dieser Version das „Docking“ der Fenster von Microsoft erfunden wurde. Dieses Feature ist zwar in folgenden Versionen verschwunden, aber in Windows 7 „wieder auferstanden“.

image

In Windows 2.x konnte man Anwendungen mit Hilfe des Program Managers starten. Man hangelte sich dabei durch verschiedene Fenster, die innerhalb des Program Managers geöffnet und geschlossen werden konnten. Um schneller auf Anwendungen zugreifen zu können, konnte man bereits „Shortcuts“ auf den Desktop legen.

image

Get Microsoft Silverlight

In Windows 95 hielt die Taskleiste und der Start-Knopf Einzug. Erstmals wurden ausgeführte Anwendungen als Symbole in der Taskleiste angezeigt und konnten darüber hinaus minimiert, maximiert und geschlossen werden. Darin hat sich bis zum heutigen Tage auch wenig verändert.

image

In Windows XP wurde die komplette Taskleiste in ein neues Design überführt.

image

Mit Windows Vista kam zum ersten Mal die Möglichkeit auf, innerhalb des Startmenüs nach Programmen und Funktionen zu suchen bzw. die Suche über den gesamten Computer zu starten. Dieses Feature wurde auch nötig, da die Programmflut im Startmenü dank vieler Zeitschriften mit CD-Beilagen ins Unermessliche gestiegen war ;)

image

In Windows 7 wurde Taskleiste visuell sehr „vereinfacht“ und mit vielen neuen Funktionen erweitert. Gestartete Programme werden in der gleichen Leiste angezeigt wie Verknüpfungen. Lediglich das Aussehen unterscheidet nun zwischen den verschiedenen Status der Anwendung.

Bei diversen Benutzerumfragen wurden folgende Fakten festgestellt:

  • Mehr als 90 % aller Benutzersitzungen haben weniger als 15 gleichzeitig geöffnete Fenster.
  • Mehr als 70 % aller Sessions haben weniger als 10 Fenster gleichzeitig geöffnet.
  • Nicht-Standard-Optionen wurden nur von max. 10 % aller Benutzer überhaupt verwendet.

Die Ziele für die Entwicklung der neuen Taskleiste sind daher wie folgt definiert worden:

  • Eine Startoberfläche für alle Anwendungen und Ziele
  • Die am meisten benutzten Elemente sollen auf „Fingertipp“ bereitstehen
  • Einfach kontrollier- und verwaltbar mit einfachsten Mitteln
  • Sauber, störungsfrei und einfach

Terminologie und Funktionen der neuen Taskleiste

Taskleisten-Schaltflächen
Jede Anwendung, jedes Ziel und jede Verknüpfung wird durch ein Symbol auf der Taskleiste dargestellt. Gestartete bzw. geöffnete Anwendungen und Ziele werden als Schaltfläche dargestellt. Sind mehrere Instanzen ein und derselben Anwendungen geöffnet, werden diese kaskadierend dargestellt. Dies kann aber über die Eigenschaften der Taskleiste nach eigenen Wünschen verändert werden.

Die Schaltflächen lassen sich sehr vielseitig anpassen. Folgende Möglichkeiten hat der Benutzer:

  • Änderung der Darstellung durch Overlays
  • Darstellung mehrfarbiger Fortschrittsbalken
  • Ändern des Hintergrunds

Damit hat man die Möglichkeit den Status der Anwendung innerhalb der Startleiste zu visualisieren. Folgende Szenarien wären denkbar: Läuft die Anwendung, behält sie das normale Symbol. Muss der User eine Interaktion durchführen, lässt man das Symbol pulsieren, liegt ein Problem vor, zeigt man zum Beispiel ein rotes Kreuz an.

image

Sprunglisten, Ziele und Aufgaben
Jedes Symbol in der Taskleiste hat eine so genannte Sprungliste. Innerhalb dieser Sprungliste gibt es Elemente die jede Anwendung besitzt: Öffnen, Alle Fenster schließen und an die Taskleiste heften bzw. von dieser entfernen. Darüber hinaus kann eine Sprungliste noch zusätzliche Dinge anzeigen. Ist eine Anwendung z.B. mit einem bestimmten Dateityp assoziiert, wie z.B. Word mit Doc-Dateien, dann werden diese automatisch unter „Zuletzt verwendet“ in der Sprungliste angezeigt. Möchte man dort vielleicht ein Dokument immer wieder öffnen, so kann man dies „anheften“. Dadurch steht es solange in dieser Liste, bis man es wieder entfernt. Diese Funktionen stehen jeder Anwendung sofort aus dem Stand zur Verfügung, ohne dass dazu Code notwendig ist.
Zusätzlich lassen sich innerhalb der Sprungliste aber auch noch Aufgaben integrieren. Das können beliebige Tätigkeiten sein. Der Windows Live Messenger macht es vor und bietet die folgenden Aufgaben an: MSN Startseite anzeigen, Postfach öffnen, Sofortnachricht senden, Online, Offline, Abwesend, usw. Das neue Outlook 2010 bietet ähnliche Funktionalitäten, so kann man über die Sprungliste sofort eine Email erstellen, einen Termin planen, direkt den Kalender aufrufen, u.v.m. Wenn man dieses Feature einmal verwendet hat, möchte man es nicht mehr missen.

image

Thumbnail-Toolbars
Ein weiteres neues Feature sind die Thumbnail-Toolbars. Als gutes Beispiel geht der Windows Media Player voran. Geht man mit der Maus über das Symbol des laufenden Mediaplayers, sieht man das aktuelle Video oder Musikcover und zusätzlich die Möglichkeit den Player zu starten, ein Element zurück- oder eines vorzuspringen. Dadurch lässt sich der Player direkt aus der Startleiste steuern, ohne dass man ihn erst einmal in den Vordergrund holen muss.

image

Auch die Darstellung der Vorschau in der Taskleiste ist individuell anpassbar. Man hat in der Startleiste und deren Vorschau ja nicht beliebig viel Platz. Daher kann man die Darstellung in der Vorschau nach eigenen Wünschen gestalten und nur das Wesentliche anzeigen lassen.

Verwendung von Managed Code

Die einfachste Art und Weise, um auf die Funktionen der Taskleiste zuzugreifen ist das Windows API Code Pack (http://code.msdn.microsoft.com/WindowsAPICodePack). Dieses wurde bereits vor einigen Tagen vorgestellt. Bindet man dieses in sein eigenes Projekt ein, kann man direkt auf die Funktionen der Taskleiste zugreifen.

Um beispielsweise ein Overlay-Symbol über dem Anwendungssymbol einzublenden, ist der folgende Code notwendig.

windowsTaskbar.SetOverlayIcon(this.Handle, TaskbarDemo.Properties.Resources.Yellow, "Yellow");

Dabei wird auf ein Bild zugegriffen, das im Projekt als Ressource mit dem Namen “Yellow” eingebunden wurde.

Möchte man die zuletzt verwendeten Dokumente in der Sprungliste anzeigen, reicht dieser Code.

jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Recent;

Oder

jumpList.KnownCategoryToDisplay = JumpListKnownCategoryType.Frequent;

Möchte man den Fortschritt der Anwendung in der Taskleiste darstellen, ist dieser Code ausreichend.

TaskbarManager.Instance.SetProgressValue(trackBar1.Value, 100);

Was sind Sprunglisten?

Bei den Sprunglisten handelt es sich um eine neue Funktionalität, die es ermöglicht, dem Anwendungssymbol zusätzliche Funktionen hinzuzufügen. Einfach auf dem Symbol die rechte Maustaste drücken und schon erscheint die Sprungliste. Standardmäßig sind die Funktionen zum Öffnen, Schließen und Anheften enthalten. Wenn die Anwendung die Funktionen „Zuletzt verwendete Dokumente“ und „Häufig verwendete Dokumente“ unterstützt, so werden diese Dokumente ebenfalls direkt in der Sprungliste angezeigt. Diese Liste der Dokumente kann für eigene Anwendungen sehr leicht angepasst werden.

Für einen einfachen Zugriff empfiehlt sich die Verwendung des Windows API Code Pack (Link kommt hier rein). Verwendet man diese Bibliothek, dann lässt sich die Liste der Dokumente über die folgenden Zeilen Code steuern:

private JumpListCustomCategory category1 =
new JumpListCustomCategory("Custom Category 1");

// Add shell item to custom category
String path = “mydocument.txt”;
category1.AddJumpListItems(new JumpListItem(path));

image

Möchte man eine eigene Aufgabe zur Taskleiste hinzufügen, die dafür sorgt, dass ein bestimmtes Programm geöffnet wird, so geht dies mit den folgenden Zeilen Code.

// Path to Windows system folder
string systemFolder = Environment.GetFolderPath(Environment.SpecialFolder.System);

// Add our user tasks
jumpList.AddUserTasks(new JumpListLink(Path.Combine(systemFolder, "notepad.exe"), "Open Notepad")
{
   IconReference = new IconReference(Path.Combine(systemFolder, "notepad.exe"), 0)
});
jumpList.AddUserTasks(new JumpListLink(Path.Combine(systemFolder, "mspaint.exe"), "Open Paint")
{
  IconReference = new IconReference(Path.Combine(systemFolder, "mspaint.exe"), 0)
});
jumpList.AddUserTasks(new JumpListSeparator());
jumpList.AddUserTasks(new JumpListLink(Path.Combine(systemFolder, "calc.exe"), "Open Calculator")
{
  IconReference = new IconReference(Path.Combine(systemFolder, "calc.exe"), 0)
});

 

Externe Tools für Sprunglisten

Wer gerne Schnellzugriff auf frei konfigurierbare Tools haben möchte, dem kann ich den Jumplist-Launcher empfehlen. Ein kostenfreies Tool, das es hier (Link: http://www.ali.dj/jumplist-launcher/) gibt. Damit lassen sich bis zu 60 Programme frei in der Jumplist konfigurieren.

The-Oliver Deutsch, Developer, Windows

Windows 7 – Entwickeln mit dem Windows API Code Pack

February 4th, 2010

Das Windows API Code Pack for Microsoft .NET Framework ist eine .NET-Bibliothek für die Nutzung einiger der neuen Windows 7-Features sowie Funktionen aus älteren Betriebssystemen. Diese Bibliothek beinhaltet Funktionen, die so heute noch in keinem .NET Framework enthalten sind. Die nächste Version des .NET Framework wird große Teile dieser Bibliothek übernehmen, allerdings dauert das noch eine Weile. Leider kann aber wegen des Open Source-Charakters momentan keine hundertprozentige Gewährleistung gegeben werden, dass die Bibliotheken im .NET Framework genauso aussehen werden, wie im Code Pack.

Das tolle an diesen Bibliotheken ist, dass sie im Quellcode vorliegen und so von jedem erweitert werden können. Dadurch erhält man die Sicherheit, dass die eigenen Anwendungen auch noch mit späteren Versionen des .NET Framework funktionieren werden.

Wo bekommt man das Code Pack her?

Alle notwendigen Ressourcen können in einer einzelnen Datei heruntergeladen werden. Der Download ist hier verfügbar: http://code.msdn.microsoft.com/WindowsAPICodePack

image

Das Code Pack gibt es derzeit in der Version 1 und enthält die folgenden Bestandteile:

  • Windows 7 Taskbar Sprunglisten, Symboloverlays, Fortschrittsbalken, Tabbed Thumbnails und Thumbnail Toolbars.
  • Windows 7-Bibliotheken, bekannte Ordner, Nicht-Filesystem-Container.
  • Windows Shell Search API Support, eine Vielzahl von Shell-Funktionen inkl. Drag und Drop für Shell-Objekte (z.B. Dateien).
  • Explorer Browser Control.
  • Shell-Eigenschaften.
  • Windows Vista- und Windows 7-Dateidialoge, einschließlich benutzerdefinierter Steuerelemente.
  • Windows Vista und Windows 7 Task-Dialoge.
  • Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) APIs. (DirectWrite und WIC sind derzeit nur teilweise unterstützt)
  • Sensor Platform APIs
  • Extended Linguistic Services APIs
  • Power Management APIs
  • Application Restart and Recovery APIs
  • Network List Manager APIs
  • Command Link Steuerelement und System-Symbole.
  • Shell Search API support.
  • Support für Direct3D- und Direct2D-Interoperabilität.
  • Support von Typographie und Schriftarten für DirectWrite APIs.

Die Anforderungen des Code Pack

  • .NET Framework 3.5 SP1 Ist mindestens erforderlich
  • Diese Bibliothek adressiert Windows 7 RTM (bereits verfügbar für alle MSDN Subscriber), einige Features funktionieren allerdings auch auf älteren Windows Betriebssystemen.
  • DirectX Features benötigen das Windows SDK für Windows 7 RTM. Zusätzlich benötigen einige Direct3D-Beispiele das DirectX SDK (Version August 2009).

Erstellen und Verwenden der Bibliothek

Um die Bibliothek zu erstellen (ausgenommen die DirectX betreffenden Features), benötigt man Visual Studio 2008. Der gesamte Inhalt des Pakets „WindowsAPICodePack.zip“ sollte dafür in einen neuen Ordner entpackt werden. Darin enthalten ist die Datei „WindowsAPICodePack.sln“, die die gesamte Lösung beinhaltet.

Für das Erstellen der DirectX-Features wird“DirectX.sln“ innerhalb des DirectX-Verzeichnisses benötigt. Eine genauere Beschreibung der Anforderungen ist in der einer Hilfedatei im selben Ordner beschrieben

Welche Beispiele sind im Code Pack enthalten?

Das Code Pack beinhaltet neben den Bibliotheken auch einige Beispielanwendungen, die sofort lauffähig sind, um die Verwendung erfolgreich zu demonstrieren. Jedes Beispiel ist sowohl in C# also auch in Visual Basic .NET verfügbar.

Konkret enthalten sind Beispiele für Explorer-, Netzwerk-, Ribbon-, Startleiste-, Sensor- und Dialog-Bibliotheken.

image

 

Get Microsoft Silverlight

The-Oliver Deutsch, Developer, Windows

Windows 7 – Entwickeln mit dem Windows Software Development Kit

February 4th, 2010

Microsoft bringt für jede Version von Windows ein besonderes Kit für die Entwicklung von Anwendungen heraus. Dieses steht Interessierten kostenfrei zur Verfügung: Das Windows Software Development Kit.

Beim Microsoft Windows SDK handelt es sich um einen Satz von Tools, Codebeispielen, Dokumentationen, Compilern, Headern und Bibliotheken, mit denen Entwickler Anwendungen erstellen können, die unter Windows-Betriebssystemen mit systemeigenen (Win32) oder verwalteten (.NET Framework) Programmiermodellen ausgeführt werden.

Natürlich gibt es dieses SDK auch für Windows 7. Je nach Funktionsumfang ist es zwischen 300 KB und 4 GB groß. Daher kann die Installation je nach Netzwerkverbindung auch mal etwas länger dauern. Im SDK findet sich für jeden Entwickler einiges an hilfreichen Codebeispielen und Werkzeugen für den eigenen Werkzeugkasten.

Windows7SDK

Hier an der Stelle noch mal der sehr wichtiger Hinweis: Das Windows SDK ist ein Kit an Software-Entwicklungshilfen. Es ist teilweise sehr komplex und umfangreich. Da die Dokumentation teilweise direkt von den Entwicklern kommt, sind alle Bestandteile ausnahmslos im Englisch gehalten. Wäre es ganz einfach, dann könnte es ja jeder ;) .

Möchte man sehen, welche Version des SDKs für welches Betriebssystem installiert ist, kann man das mit dem Configuration Tool ermitteln und einstellen. Ein wichtiger Einstiegspunkt ist die Dokumentation die mitgeliefert wird.

Wer behauptet, dass sich von Windows Vista zu Windows 7 nicht viel getan hat, der darf sich gerne die folgende Liste mit neuen und erweiterten APIs auf der Zunge zergehen lassen:

  • Active Directory Rights Management Services
  • Biometric Service API
  • COM
  • Core Windows
  • Enhanced Storage
  • Enhanced Taskbar
  • Event Tracing for Windows (ETW)
  • Extended Linguistic Services
  • File Server resource Manager
  • Hardware Counter Profiling
  • Hyper-V
  • Internet Explorer
  • Location API
  • Mobile Broadband
  • Native Wifi
  • Network Share Management
  • Packaging
  • Parental Controls
  • Peer Distribution
  • Performance Counters
  • Power Management
  • Scenic Animation
  • Sensor API
  • Virtual Disk Service
  • Virtual Hard Disk
  • Volume Shadow Copy Service
  • Windows Connect Now
  • Windows Error Reporting
  • Windows Event Log
  • Windows Gadget Platform
  • Windows Installer
  • Windows Scenic Ribbon
  • Windows Touch
  • Windows Troubleshooting Platform
  • Windows Web Services
  • XPS Documents

Einige davon, definitiv nicht alle, werden wir hier noch genauer vorstellen.

Was befindet sich im SDK?

Im SDK befinden sich Beispielanwendungen auf „Hallo Welt“-Niveau für erste Schritte in bestimmten Bereichen bis hin zu sehr komplexen Beispielen, die die Technologien tiefer demonstrieren.

Tools für Managed Code

  • ASPNet_merge.exe (ASP.NET Merge Tool für Assemblies)
  • SqlMetal.exe (Code Generation Tool für SQL Tabellen in .NET-Klassen)
  • Xsltc.exe (XSLT Compiler für XSLT-Style Sheets in Assemblies für eine bessere Performance)

Tools für Native (Win32 und COM) Entwicklung

  • BETest.exe (VSS Backup und Restore Test Tool)
  • Checkv4.exe (IPv6 Compatibility Check Tool, Hilft IPv4-Code aufzuspüren und gibt Tipps für Anpassung auf IPv6)
  • CTRPP.exe (Counter Pre-processor Tool, Performance Counter Generator)
  • Ecmangen.exe (ETW Manifest Generation Tool, Event Tracing für Windows)
  • FiltDump.exe (IFilter Dump)
  • FiltReg.exe (IFilter Registy)
  • GC.exe (SAPI Grammar Compiler, Speech Application Programming Interface, erzeugt Gramatikassemblies aus XML-Dateien)
  • Genmanifest.exe (Generate Manifest Tool)
  • IFiltTst.exe (IFilter Test Tool)
  • Midl.exe (MIDL Compiler, erzeugt eine Bibliothek für Zugriff auf Interface Definition aus der COM-Welt)
  • Sporder.exe (Protocol Reorder Tool)
  • Topoedit.exe (Topology Editor für die Media Foundation)
  • UICC.exe (Ribbon Markup Compiler)
  • Vshadow.exe (VShadow Tool, erzeugt und verwaltet Volumenschattenkopien)
  • VSSAgent.exe VSDiagview.exe (VSS Diagnostic Tools)
    VSSTrace.exe (VSSTrace Tool)
  • Vstorcontrol.exe (VSS Sample Provider Tool)
  • VSWriter.exe (VSS Test Writer Tool)
  • WsdCodeGen.exe (Web Services on Devices Code Generator)
  • Wsddebug_client.exe, Wsddebug_host.exe (Web Services on Devices Debugging Tools)
  • WSTraceDump.exe (Web Services Trace Dump Tool)
  • WSUtil.exe (Web Services Compiler Tool)

Tools für beide Welten

  • AccEvent.exe (Accessible Event Watcher, prüft Anwendungen auf Accessibility-Funktionalitäten)
  • AppVerif.exe (Application Verifier)
  • Bind.exe (Windows NT Image Binder)
  • DeviceSimulatorForWindowsSideShow.msi (Device Simulator for Windows SideShow)
  • FileFormatVerifier.exe (File Format Verifier Tool für registrierte Dateiendungen)
  • FTQuery.exe (FTQuery Tool)
  • Inspect.exe (Inspect Objects Tool)
  • MSIVal2.msi (MSIVal2 Tool, Konsistenzprüfung)
  • Orca.msi (Installer for Orca, Windows Installer Administration für eigene Installer)
  • PKTExtract.exe (Public Key Token Extractor Tool)
  • SDCatalog.Exe (SDCatalog Tool für Windows Troubleshooting Packs)
  • SDMC.Exe (SDMC Tool für Windows Troubleshooting Pack Designer)
  • SetReg.exe (SetReg Tool, Registry für Zertifikate)
  • TSPDesigner.exe (Windows Troubleshooting Pack Designer, erzeugt Windows Troubleshooting Packs)
  • UuidGen.exe (UUID Generator Tool, erzeugt Universal Unique Identifiers, auch als GUIDs bekannt)
  • VirtualLightSensor.exe (Virtual Light Sensor Tool)
  • WinDbg.exe (Debugging Tools for Windows)
  • wpt-x86.msi, wpt-x64.msi, wpt-ia64.msi (Windows Performance Toolkit)
  • XPSAnalyzer.exe (XPS Analyzer)

Weitere Werkzeuge, die man aus dem SDK nach installieren kann

  • Background Intelligent Transfer Service (BITS)
  • CAPICOM (Bietet kryptografische und andere sicherheitsrelevante Dienste an)
  • Debug Help Library (DbgHelp, Treiber- und Anwendungsdebugger)
  • Group Policy Management Console (GPMC)
  • Rights Management Services (RMS)
  • Microsoft Management Console (MMC)
  • Windows InstallerWindows Management Instrumentation (WMI)
  • Windows Remote Management (WinRM)
  • Windows Update Agent (WUA)
  • Real-Time Communications (RTC)
  • Windows Server Update Services (WSUS)

Das Windows SDK wird pro Version übrigens mehr als eine Millionen mal heruntergeladen. Das Team besteht aus 25 Personen und wer könnte da besser das Video des Tages liefern als die Program Managerin Lori Pearce

Get Microsoft Silverlight

Weiterführende Links

Teamblog der Windows SDK Entwickler: http://blogs.msdn.com/windowssdk/

Download-Link für das Windows 7 SDK: http://www.microsoft.com/downloads/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en

The-Oliver Developer, Windows

Windows Sidebar Gadgets, Silverlight und 64-Bit Probleme

February 3rd, 2010

Als Fan von Windows Sidebar-Gadgets stößt man unter 64-Bit-Versionen von Windows schnell auf bestimmte Probleme. Dieser Blogeintrag beschreibt, wie man als Benutzer und Entwickler am besten damit umgehen kann.

Grundsätzlich sind Gadgets (bzw. Miniaturanwendungen) nicht anderes als HTML-Anwendungen. Damit die Sidebar diese Anwendungen darstellen kann, wird der installierte Internet Explorer von Windows verwendet. Auf einem 64-Bit System ist dies automatisch der Internet Explorer in der 64-Bit Version. Dies gilt explizit nur für die Sidebar.

Klickt man auf einen Link in einer Email, oder ruft auch sonst irgendeinem Grund den Internet Explorer auf, so startet standardmäßig der Internet Explorer in der 32-Bit-Version. Nachteile entstehen dem Benutzer dadurch absolut nicht. Einzige Ausnahme bildet hier die Sidebar, diese verwendet automatisch den 64-Bit Internet Explorer, wenn man mit einer 64-Bit Version von Windows arbeitet.

Das hat nun zur Folge, dass Sidebar-Gadgets auch die 64-Bit-Variante verwenden. Leider stellen die wenigsten Hersteller von Browsererweiterungen ihre Plug-Ins in 32- und 64-Bit-Versionen zur Verfügung. Ganz ehrlich, es gibt quasi fast keine 64-Bit-Erweiterungen für 64-Bit Browser. Das liegt vielleicht unter anderem daran, dass außer Microsoft kein Browserhersteller aktuell eine 64-Bit Version eines Browsers für Windows geliefert hat. Weder Google Chrome, noch der Firefox, stehen in einer 64-Bit Version für Windows 64-Bit-Versionen zur Verfügung.

Silverlight und Flash stehen ebenfalls nicht in 64-Bit-Version zur Verfügung. Sie lassen sich dennoch ohne Probleme auf einem 64-Bit-System installieren, keine Sorge. Alles läuft wie gewohnt. Bis auf die Sidebar.

Hat man nun eine Windows 64-Bit Version und verwendet ein Gadget, das auf Flash oder Silverlight basiert bekommt man die Gadgets wie auf dem folgenden Bild dargestellt:

image
Ich habe hier testweise das Channel9-Gadget verwendet.

Wie kann man nun dieses Problem beheben?

Die Sidebar.exe, die Anwendung die für die Darstellung der Gadgets zuständig ist, gibt es auch in zwei Versionen: 32- und 64-Bit.

image

Einmal im Ordner C:\Program Files\Windows Sidebar.

image

Und ein weiteres Mal im Ordner C:\Program Files (x86)\Windows Sidebar.

Um nun seine Silverlight- oder Flash-Gadgets in auf einem 64-Bit System darstellen zu können muss lediglich die 32-Bit-Variante von sidebar.exe beim Starten von Windows aufgerufen werden. Dies geschieht am besten über die Autostart-Funktion von Windows.

Einfach einen Shortcut in den Order C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup hinzufügen, der die Siderbar.exe aus dem Ordner: C:\Program Files (x86)\Windows Sidebar\sidebar.exe verlinkt.

image

Anschließend wird die Sidebar im 32-Bit-Modus gestartet und verwendet den Internet Explorer in der 32-Bit-Version.

image

The-Oliver Developer, Silverlight, Windows

Was ist MSDN? Was bietet MSDN alles? Was gibt es kostenlos?

January 25th, 2010

Haben Sie sich auch schon mal gefragt, was dieses MSDN ist, ob das kostenfrei ist, ob MSDN Online das Gleiche ist wie die MSDN Subscription, ob es die über 800 Webcasts oder beispielsweise über 400 CodeClips mit dazugehörigem technischen Artikel (eine Frage, eine Antwort) wirklich kostenlos gibt? Und dies sogar alles in deutscher Sprache? Wenn Sie wirklich eine dieser Fragen sich schon mal gestellt haben oder generelles Interesse besteht MSDN kennenzulernen, so empfehle ich den Artikel: Was ist MSDN Online Deutschland?

clip_image001

The-Oliver Developer

Drastische Performanceverbesserungen seit Beta 2 in Visual Studio 2010

January 25th, 2010

Brian Harry – Microsoft Technical Fellow und „Vater“ des Team Foundation Server – hat in seinem Blog neueste Ergebnisse zu den Performanceverbesserungen von Visual Studio 2010 seit Beta 2 veröffentlicht. Und die Nachrichten sind gut, genauer gesagt sogar sehr gut: Die Performance von Visual Studio 2010 wurde seit Beta 2 drastisch verbessert und es scheint als seien alle größeren Probleme und Schwachstellen ausgemerzt worden und Visual Studio 2010 ist nahezu „ready to ship“.

Seit Beginn der aktuellen Performanceoptimierungen wurde insgesamt drei so genannte „Super Limited Community Technology Previews“ (SLCTP) veröffentlicht. Diese SLCTPs gingen an quasi jeden, der sich gegenüber Microsoft zu Performanceproblemen in Visual Studio 2010 Beta 2 geäußert hatte (wenn entsprechende Kontaktinformationen verfügbar waren). Vergangene Woche wurde SLCTP 3 an mehrere hundert Personen außerhalb Microsofts ausgeliefert. Mittlerweile sind bereits knapp 100 ausgewertete Feedbackbögen zurückgekommen. Auch innerhalb von Microsoft wurde SLCTP 3 eingesetzt, mittlerweile bei circa 80% innerhalb der Visual Studio DevDiv und ebenfalls bei wichtigen internen Partnerabteilungen wie Expression Blend, Exchange, CodePlex und Oslo. Aus all diesen Quellen kam und kommt stetig Feedback: Der Unterschied zwischen dem aktuellen Build und Beta 2 ist beeindruckend!

Das ursprüngliche Feedback zu Beta 2 hatte ergeben, dass zwischen 30% bei externen Umfragen und bis zu 70% der Anwender bei internen Umfragen mit Beta 2 „relativ unzufrieden“ oder gar „sehr unzufrieden“ waren. Größer kann der Kontrast zur aktuellen SLCTP kaum ausfallen: Knapp 60% sind „sehr zufrieden“ und weitere 40% sind „relativ zufrieden“ – nur noch 2% sind „relativ unzufrieden“.

clip_image001

In Kürze wird der angekündigte Release Candidate veröffentlicht, dann wird eine weiter optimierte Version nicht nur Hunderten sondern Tausenden zur Verfügung stehen, damit vor der Veröffentlichung noch weitere Optimierungen geschehen können.

Detaillierte Informationen, sowie Zitate von Testern finden Sie im Blog von Brian Harry: http://blogs.msdn.com/bharry/archive/2010/01/24/state-of-vs-2010-performance.aspx

The-Oliver Developer

Microsoft Webcast-DVD – Jahresedition 2009 – wurde veröffentlicht!

January 25th, 2010

Endlich ist es wieder soweit: Die beliebte Microsoft Webcast-DVD Jahresedition 2009 ist erschienen!
Mehr als 150 Webcasts von MSDN und TechNet gebündelt in einem Offline-Archiv – die brandaktuelle Webcast DVD ist eine Sammlung der neuesten Webcasts aus dem Jahr 2009, u.a. zu Windows Server 2008 R2, Server-Virtualisierung, Windows 7, Visual Studio 2010 oder Internet Explorer 8. Bestellen Sie sich jetzt Ihr Exemplar des kompakten Expertenwissens auf DVD für 19,90 EURO inklusive Versand. Besucher der CeBIT 2010 können sich am MSDN & TechNet-Messestand in Halle 4 ihr Exemplar auch kostenlos gegen Vorlage eines Promocodes abholen – kurze Registrierung vorausgesetzt.
Wir würden uns freuen, wenn wir Sie auf der CeBIT 2010 in Hannover begrüßen dürften!
Weitere Informationen zur Webcast-DVD von Microsoft gibt es auf unserer Bestellwebseite: Hier geht’s zur Bestellung

The-Oliver Developer, Info

Eine neue Folge "msdn tv – Nachrichten für Entwickler" ist online

January 22nd, 2010

Im Mittelpunkt der ersten Folge von „msdn tv” im neuen Jahr steht das Thema „PHP”: in ungewohnt frostiger Atmosphäre spricht Moderator Jan Schenk dazu mit Björn Schotte, Chefredakteur der Zeitschrift „PHPmagazin” und Mit-Geschäftsführer des IT-Dienstleisters Mayflower. Im Interview geht’s unter anderem um Microsofts allmähliche Annäherung an PHP, um Open Source und die deutsche PHP-Community.
In den Kurznachrichten außerdem Infos zur neuen Kategorie „Embedded Development“ beim „Imagine Cup”-Wettbewerb, zu Silverlight- und Expression-Lehrvideos aus der Community, ’Windows 7’-Seminaren für ISVs und „Windows Azure”-Nutzungsmöglichkeiten für Bezieher der MSDN Premium Subscription.

The-Oliver Developer, Info

Games for Windows

January 22nd, 2010

Wie cool ist das denn?

Auf www.gamesforwindows.com gibt es massig Spiele für Windows. Teilweise für “umme”. Lädt man sich den Client für Games for Windows herunter, hat man den Games for WIndows Marketplace direkt auf dem Desktop und kann sich direkt diverse Klassiker herunter laden.

image

The-Oliver Windows

Windows 7 Workshops – im neuen Jahr mit neuem Programm!

January 20th, 2010

Auch im aktuellen Jahr werden wir wieder die beliebten Windows 7 Workshops für Softwarehersteller anbieten. Mit einer frischen Agenda ist der Schwerpunkt ein wenig mehr Richtung Entwickler verschoben worden. Themen, die in der neuen Veranstaltungserie behandelt werden sind: Windows 7 Anwendungskompatibilität, Windows 7 Logo, Benutzerkontensteuerung, Windows Error Reporting, High DPI, neue Features in Windows 7 und .NET 4.0 im Zusammenspiel mit Windows 7.

Termine:

Die Veranstaltungen beginnen um 10 Uhr, enden ca. gegen 17 Uhr und sind kostenfrei. Ihre Anmeldungen schicken Sie bitte einfach an unsere E-Mail-Adresse fitmit7@microsoft.com. Weitere Informationen zu dieser Veranstaltungsserie finden Sie auch im Blog Softwarehersteller in Deutschland.

The-Oliver Deutsch, Developer, Windows

Silverlight TV auf Channel 9

January 20th, 2010

Seit kurzem gibt es auf Channel 9 eine neue Show: Silverlight TV.

In dieser Show wird viel Hintergrundwissen zu Silverlight berichtet, wovon träumt das Produktteam. Exklusive Interviews mit Kernentwicklern und Community Leaders.

Viel Spaß mit Silverlight TV!

The-Oliver Silverlight

Comic-Engine in Silverlight frei auf Codeplex verfügbar

January 19th, 2010

Unter dem Projektnamen TheOliver.Comic hat Oliver Scheer auf Codeplex sein Mini-Comic-Framework für Silverlight veröffentlicht. Darin enthalten sind bereits alle wichtigen Basiselemente für die Erstellen von Silverlight-basierten, aktiven Comic-Strips.

Der Sourcecode für diese Engine ist kostenfrei verfügbar. Interessierte können gerne an diesem Projekt mitentwickeln. Einfach bei Codeplex registrieren und Mitglied in der Projektgruppe werden.

Link: http://theolivercomic.codeplex.com/

Demo: http://the-oliver.com/silverlight/demos/comic

The-Oliver Developer, Expression, Silverlight