Windows Objekte nutzen

Du bist hier: Hinterkattentuffel - Ruby - Windows Objekte nutzen
Prev: The ruby way

Wer Ruby ausschließlich unter Windows nutzen möchte, kann sich über eine einfache OLE-Schnittstelle aus einem reichhaltigen Pool vorhandener Objekte bedienen und auf diesem Gebiet locker mit VisualBasic-Programmierern gleichziehen. OLE steht für Object Linking and Embedding. Die Objekte werden von Windows selbst oder von auf OLE, COM oder Active-X basierenden Windows-Programmen bereitgestellt. Die bekanntensten Vertreter solcher Programme stammen aus Microsofts Office-Familie aber es gibt daneben jede Menge anderer Anbieter, die ihre Software auch auf eben diese Weise in wiederverwendbare Komponenten partitionieren.

Das Schwierige an OLE ist i. a. nicht die Verwendung dokumentierter Objekte, sondern das Auffinden der Dokumentation. Die Doku wichtiger Windows-Objekte findet man im sogenannten Plattform-SDK. Schon der Kern dieses "Software Development Kit" ist mit etwa 200 MB eigentlich nur noch über eine DSL-Verbindung in akzeptabler Zeit vom Microsoft-Server herunterzuladen. Eine Beschränkung auf die reine Doku (ohne Headerdateien) bringt evtl. mehr Frust als Freude. Bei mir wurden die Header zunächst mit übertragen und dann von der Platte gelöscht :-(

Welche OLE-Objekte in einem Ruby-Programm Sinn machen, hängt entscheidend davon ab, für welches Zielsystem ich meine Anwendung entwickle. Neben der grundsätzlichen Abhängigkeit vom Betriebssysstem mache ich mich mit OLE zusätzlich von Einzelkomponenten, etwa Word, Excel, ScriptingHost oder dem InternetExplorer abhängig. In meinem Beispiel verwende ich daher ein Objekt, welches man mit ziemlicher Wahrscheinlichkeit auf jedem Windows-Rechner findet: Die Shell.

In winshell_0.1.rb.txt verwendet die Klasse WinShell das Modul win32ole zum Auslesen von Windows-Verknüpfungen. Interessanterweise habe ich in der allgemeinen Programmierschnittstelle (Windows-API) keine Funktion gefunden, die eben dies leistet. Das Shell-Objekt stellt vermutlich eine Komponente des Windows-Explorers dar und legt einiges von dem offen, was dem Kommandointerpreter verborgen bleibt.

Zum Ausprobieren der Klasse benenne die Datei um, kopiere sie in ein im Pfad gelistetes Verzeichnis. Dann führe "winshell.rb *" in einem Verzeichnis aus, in dem es Verknüpfungen gibt. Es sollten nun die Links mit ihren Zielpfaden (in Ruby-Notation, also mit Separator '/') gelistet werden.

Next: Windows virtuelles Dateisystem