Menü
Avatar von Andor72
  • Andor72

mehr als 1000 Beiträge seit 07.09.2006

Windows hat sich eh langsam überlebt ...

Und nein das soll kein typisches heise MS Bashing sein. Aber
Microsoft hat seit Windows 2K/XP nichts neues mehr am Start.
Neulich habe ich mich wieder näher mit dem Thema MS befasst - nix
großartiges, nur ein Firmware Update Tool mit etwas Automatismus.
Also geschaut was gerade so geht, .Net mit c# und WPF. Damit sollte
man die Kiste doch relativ easy programmieren können.

USB:
Dann gings schon los - ich hätte gerne eine Nachricht wenn ein USB
Gerät
verbunden oder getrennt wird. Und <ZACK> da war sie wieder, die Win32
API, die man in C# reinfrickeln musste um die App für die Messages zu
registrieren. Gesagt, getan ...
Der Message Handler kam einem auch so verdächtig bekannt vor -
wParam, lParam - das hatten wir doch schon einmal. Es kommt aber noch
besser - an dieser Stelle ist Ende, Windows sagt einem zwar DASS,
aber nicht, welches Gerät verbunden wurde. Ok - fragen wir halt
vorher und nachher die Liste der Geräte ab. 

>>>>new ManagementObjectSearcher(@"Select * From Win32_USBHub")

aaaaaaaha, naja warum auch nicht .....

Synchron geht das aber nicht, da wir gerade ein Event aus dem Managed
System verarbeiten und keine neue Anfrage stellen können, solange das
nicht beendet ist (die genaue Fehlermeldung habe ich leider nicht
mehr). Vielleicht habe ich auch den richtigen Ansatzpunkt nicht
gefunden - es war ja mehr ein ruck zuck Projekt ...

Multithreading:
Oft und viel gemacht, Linux, OS X, VxWorks, Java, Qt oder generell
Posix etc und dann kam Windows mit .Net! Geht erst ganz gut mit
Thread und Process - das zurücksynchronisieren auf den Main Event
Thread ist unterirdisch, also Backgroundworker anstatt Thread geht ja
noch und beim Process auf den Dispatcher des Event Threads, der
natürlich nur in der WPF Windows Klasse zur Verfügung steht (OMG)
Da ist ja Signal/Slot von Qt 100mal flexibler - von GCD von OS X gar
nicht erst zu sprechen.

Was genau machen die Jungs von MS eigentlich? Da basteln sie
Framework um Framework, man kennt sich gar nicht mehr aus ob jetzt
WinForms oder WPF oder oder oder - aber schlussendlich ist das alles
nur "on Top" von Win32 und wird anscheinend niemals ein "First
Citizen" in Windows - dabei sollte das doch schon bei Vista so sein.
Und wenn noch alles so nett aussieht - unter der Haube tut sich
einfach nichts. "Der Treiber für ihren USB Stick wird gerade
installiert. Sie können ihren USB Stick jetzt verwenden".

Das selbe Progrämmchen benötigte unter Windows einen Installer, der
die Treiber für das USB Gerät installiert und die Rechte von den
Ordnern im Programme Folder zurechtrückt, das WDK, um die Treiber
installieren zu können (dpinst dafür in unterschiedlichen 32 und 64
Bit Auslegungen) und VS produziert einen unglaublichen "Müllhaufen"
an Dateien beim Build. Deploy macht dann gleich einen Installier
draus, echt eine super Sache, nur customizen kann man den halt so gut
wie gar nicht.
(Und nicht vergessen die Treiber beim "Software deinstallieren" auch
wieder deinstalliern, bitte Danke).

Unter OS X generiert Xcode eine .app (gut das ist ein Ordner) in dem
alles fein zusammengepackt wird. Davon macht man ein .dmg und der
User installiert per drag&drop oder er startet einfach von .dmg.
Treiber brauchts nicht ... (wie auch unter Linux).

P.S. Einen hab ich noch
Um eine Ressource zu adressieren verwendet man unter Windows folgende
einfache und logische Syntax

Uri uri = new Uri("pack://application:,,,/Resources/"test.png",
UriKind.Absolute);
BitmapImage image = new BitmapImage(uri);

tolle Sache, Microsoft - raucht ihr alle Crack?

Bewerten
- +
Anzeige