Windows ConfidentialWindows-Explorer kann keinen Text liefern

Raymond Chen

Es war einmal ein PowerToy mit dem Namen „Send To X“. Dieses PowerToy stellte viele schöne Funktionen zur Verfügung. So konnten Sie beispielsweise mehrere Dateien auswählen, mit der rechten Maustaste klicken und danach den Befehl „Send To Clipboard as Names“ (Als Namen an die Zwischenablage senden) auswählen. Wie erwartet, wurden dadurch die Namen der ausgewählten Dateien in die Zwischenablage kopiert.

Dies war auf jeden Fall ein sehr nützliches PowerToy, aber wieso musste es überhaupt erst entwickelt werden? Wieso können die Dateien nicht einfach in Windows®-Explorer kopiert und danach als Text eingefügt werden, um eine Liste der Dateinamen zu erhalten? Oder noch besser: Wieso können Dateien nicht einfach aus Windows-Explorer gezogen und im Editor abgelegt werden, um eine Liste ihrer Namen zu erhalten?

Keiner unserer Versuche hat funktioniert.

Eine über die Zwischenablage oder durch Ziehen und Ablegen durchgeführte Datenübertragung wird durch OLE-Datenobjekte vermittelt, die durch die IDataObject-Schnittstelle dargestellt werden. Ein Datenobjekt bietet verschiedene Formate an. Einige Zwischenablageformate wie Text und Bitmaps gibt es schon so lange, wie es Windows gibt. Weitere Formate sind im Lauf der Zeit hinzugekommen. Als das Verfahren des Ziehens und Ablegens zum ersten Mal in Windows integriert wurde, wurde es in Form eines HDROP eingebunden. Dieses HDROP konnte an Funktionen wie „DragQueryFile“ übergeben werden, um die Dateinamen zu extrahieren. Wenn Sie ein Objekt aus Windows-Explorer in die Zwischenablage kopieren, bietet das resultierende Datenobjekt unter anderem das oben erwähnte HDROP, die Dateiinhalte und einen Dateigruppendeskriptor an. Eines der nicht vom Datenobjekt angebotenen Formate ist das Textformat.

Wenn einem Ablageziel, also einem Bereich, auf dem Sie Objekte ablegen können, mitgeteilt wird, dass ein Datenobjekt auf ihm abgelegt werden soll, fragt das Ablageziel das Datenobjekt, was es enthält. Das Datenobjekt antwortet, indem es alle von ihm unterstützten Formate absteigend in der Reihenfolge ihrer Priorität auflistet. Mit anderen Worten: Das vom Datenobjekt an erster Stelle zurückgegebene Format ist das Format, das dieses Objekt am besten beschreibt. Danach kommt das zweitbeste Format und so weiter. Am Ende wird das letzte, am wenigsten geeignete Format angegeben. So führt beispielsweise ein aus einem Fenster von Windows-Explorer gezogenes Datenobjekt, das mehrere Objekte darstellt, wahrscheinlich an erster Stelle eine Shell-ID-Liste an, da diese eine nahezu perfekte Darstellung der Inhalte eines Fensters von Windows-Explorer bietet. An zweiter Stelle steht vielleicht ein Dateigruppendeskriptor, gefolgt von den Dateiinhalten, und danach ein HDROP.

1998 hat das Shell-Team versucht, die Liste der angebotenen Formate um reinen Text zu erweitern und dieses Textformat an das Ende der Liste zu setzen. Dies sollte im Grunde heißen: „Wenn gar nichts mehr geht, können Sie mir wenigstens ein bisschen Text (d. h. die Liste der Dateien) entlocken“. Leider wurden viele Programme durch das Textformat abgelenkt und ließen die anderen Formate völlig außer Acht. Diese Programme steuerten also sofort das Textformat an, das nichts weiter als eine Liste der Dateinamen enthielt. Dies hatte zur Folge, dass das Programm beim Ziehen einer Datei aus Windows-Explorer und dem anschließenden Ablegen dieser Datei in einem Dokument lediglich den Dateinamen statt die Datei selbst in das Dokument einfügte.

Das war ein großes Problem.

Aufgrund des ausgesprochen negativen Feedbacks in Bezug auf die Anwendungskompatibilität wurde diese Änderung wieder zurückgenommen. So kommt es, dass beim Ziehen und Ablegen oder beim Einfügen von Dateien, die aus Windows-Explorer kopiert wurden, die Dateinamen vom Shell-Datenobjekt nicht als Text angeboten werden.

In Windows Vista® wird dieses Problem jedoch behoben, da Sie die Möglichkeit haben, den Pfad als Text zu kopieren: Halten Sie beim Klicken mit der rechten Maustaste die Umschalttaste gedrückt, um das erweiterte Kontextmenü zu öffnen. Dadurch wird die neue Option „Als Pfad kopieren“ bereitgestellt. Ein spezielles PowerToy ist also nicht mehr erforderlich.

Raymond Chen befasst sich auf seiner Website „The Old New Thing“ und in seinem gleichnamigen Buch (Addison-Wesley, 2007) mit der Geschichte von Windows und mit der Win32-Programmierung. Die Arbeit an betrieblichen Mechanismen überlässt er anderen.

© 2008 Microsoft Corporation und CMP Media, LLC. Alle Rechte vorbehalten. Die nicht genehmigte teilweise oder vollständige Vervielfältigung ist nicht zulässig.