Clipboard oder auch Zwischenablage genannt

Neuerdings unter Vista gibt es ein neues Tool mit dem man in der Kommando-Zeile den Output eines Kommandos in die Zwischenablage umlenken kann: clip.exe. Das ist natürlich nur für Texte gedacht, also alle anderen Formate werden wohl nicht unterstützt - denke ich mal, weil ausprobiert habe ich das nicht. Das Tool ist zweckmäßig und nett. Und in der ein oder anderen Form gab es das ja auch schon früher.

Auf der Suche nach dem Komplement, den Text in der Zwischenablage wieder als Input einem anderen Programm auf der Kommando-Zeile zuzuführen, beißt man sich die Zähne aus. Clipboard-Programme gibt es wie Sand am Meer (mein Liebling ist hier), aber so ein kleines Tool wie clip.exe nur anders herum, das gibt es wohl nicht. Seltsam eigentlich. Vor langer Zeit habe ich mir mal den Windows-Scripting-Host angesehen und da auch feststellt, dass man fast auf alles zugreifen kann, nur auf die Zwischenablage nicht. Irgendwo habe ich gelesen, dass man das Auslesen der Zwischenablage als Sicherheitsrisiko versteht und nur sehr sparsam mit automatischen Tools drauf zugreifen kann.

Trotzdem bliebt die Frage, ob man nicht doch - trotz Risikos - eine Lösung finden kann. Ja, zwar etwas umständlicher als man denkt, aber es geht. In einem .vbs-Script lässt sich der Internet Explorer zum Zwecke des Auslesens der Zwischenablage benutzen. Die Idee stammt von hier. Man muss noch ein wenig die Sicherheits-Standards des IE verfeinern, damit keine Meldungen kommen.

Hier das Skript clipread.vbs:

On Error Resume Next
Err.Clear
Dim C
C = ReadClipboard
Wscript.echo C
function ReadClipboard
with createObject("internetexplorer.application")
.navigate "about:blank"
ReadClipboard = .document.parentwindow.clipboardData.getData("text")
.quit
end with
end function

Läuft natürlich auch auf der Kommando-Zeile und gibt je nach dem, ob es als WScript oder CScript ausgeführt wird, den Zwischenablage-Inhalt in einer Message-Box oder auf StdOut (Standard-Out) aus. Umschalten zwischen diesen beiden Modi kann man mit

WSCRIPT //H:CSCRIPT

bzw. wieder zurück mit

WSCRIPT //H:WSCRIPT

Auf der Kommando-Zeile kann man die Ausgabe weiterverwenden mittels einer Pipe (|) oder Redirektion (>), zum Beispiel kann man die Ausgabe auf einen Drucker umlenken:

clipread > lpt2

Wenn man seine eigenen Drucker als Netzwerk-Drucker freigibt und mit

use lpt2 //Computername/Druckername

eine Zuordnung trifft, dann kann man auf fast jedem Drucker eine Ausgabe hinbekommen.

Wenn es einem nur ums ausdrucken geht, kann man auch direkt aus dem IE den Druck starten. Ich habe das mal clipprint.vbs genannt:

On Error Resume Next
Err.Clear
ReadClipboard
function ReadClipboard
with createObject("internetexplorer.application")
.navigate "about:blank"
.document.body.innerHTML = "<pre>"
+ .document.parentwindow.clipboardData.getData ("text")
+ "</pre>"
.document.parentwindow.print ()
end with
end function

Damit die Zeilenvorschübe auch vom IE ausgegeben werden, wird der Inhalt der Zwischenablage zwischen <pre>-Tags gesetzt. Das Druck-Fenster wird automatisch aufgerufen und man kann seinen Lieblings-Drucker aussuchen und ggf. noch Einstellungen vornehmen. Eine Verknüpfung auf das Skript gelegt, auf den Desktop geschoben und mit einer Funktionstaste versorgt, wird daraus fast ein Komfort-Zwischenablage-Druck-Programm ^_^.