Zwischenablage programmieren/erweitern!

Thomas Lindner

Erfahrenes Mitglied
Hallo Jungs, Mädels!

Ich weiß eigentlich müsste ich das jetzt in "Projekte & Jobs" veröffentlichen, aber da ich mir dachte hier näher an der Quelle zu sitzen, wollte ich es mal hier probieren.
Sollte sich jemand daran zu sehr stören, so mag er mir bitte Bescheid geben oder meinen Beitrag einfach verschieben!

(Anmerkung: Coders-Talk, weil ich kenem schimmer habe in welcher Sprache mein Anliegen umsetzbar ist)

Danke (1)!

So, nun zu meinem Anliegen:

Ich hätte gerne ein kleines Programm, das entweder die Zwischenablage von Windows ersetzt oder (huckepack) erweitert und zwar um folgende Funktion:

Alles was Text ist ( Grafiken, etc. sind nicht nötig ) und in die Zwischenablage kopiert wird soll ( STRG + C, Symbol in Programmen etc. ) soll sofort als TXT auf der Festplatte abgespeichert werden und mit einem Time-Stamp versehen werden, am besten als Dateinamen.

Beispiel:

Wenn ich jetzt zum Beispiel dieses Posting markiere und kopiere, soll das Programm eigenständig eine Datei anlegen (TXT) mit dem Dateinamen {aktuelles Datum}{aktuelle Uhrzeit}.txt. und diese im Verzeichnis C:/Copy_Cache abspeichern!

Ich weß nicht ob und wie soetwas geht - leider!

Wenn sich jemand dazu bereit erklären würde wäre super.

Leider kann ich denjenigen mit bezahlen oder mit Gold und Reichtrum überschütten, aber mein ewiger Dank sei' ihm/ihr gewiss!

Danke (2)
 
Leider kann ich denjenigen mit bezahlen oder mit Gold und Reichtrum überschütten
Wie sehe denn die Bezahlung genauer aus? :-) da fehlt wohl ein nicht :-)

Naja also wenn sowas überhaupt geht, dann denke ich mal mit C/C++, da VB oder so, zu umständlich mit Systemnähe umgeht.
Ich hätte da auch eine Idee, allerdings hab ich keine Ahnung ob der Weg richtig ist, und ob es so funktionieren könnte:
Man müsste einen kleinen Dienst Programmieren, der ja dann nach dem Start von Windows "aktiv" ist. Dieser Dienst richtet einen Systemhook ein (Kommunikation über eine DLL, ist hald so bei Hook's).
Der Hook, fängt dann die Nachrichten zum Kopieren in die Standardzwischenablage ab und verarbeitet die Daten die da ankommen (Speichern in die Datei). Dann leitet er die Daten wieder an das System weiter, sonst könnten einige Programme Probleme bereiten, weil sie sich evtl. auf die Zwischenablage stützen.

So oder so ähnlich könnte, wie gesagt könnte das funktionieren.

Stellt sich nur die Frage: macht das Ganze Sinn und für was braucht man sowas?

Gruss Homer
 
Ich muss gestehen, Windows API Programmierung ist nicht wirklich mein gebiet, aber auch für mich klingt dies als zu grossen Eingriff in
den Desktop.
Da dies immer läuft lässt sich die fülle an Bugs die im Zusammenhang mit diesem Tool auftreten wohl nicht genau abschätzen.

Ich würde dein Wunsch richtung MS schicken, vielleicht bauen sie sowas ja in Windows Longhorn ein ;)
 
Ich hätte da auch noch eine Idee wie man die API umgehen könnte, aber ich glaub das würde zulasten das System führen und ob es 100% funktioniert, bin ich mir auch nicht so ganz sicher.

Aber nun mein Idee:

Man könnte einfach ein Programm schreiben das z.b. jede ms die Zwischenablage auf Änderungen überprüft. Sollten sich der Inhalt der Zwischenablage änder so kopiert das Programm die in der Zwischenablage enthaltenen Daten in eine Textdatei.

Nur man müsst auch Überprüfen ob sich um einen "reinen" Text handelt, aber da ich mich damit auch noch nicht so befasst habe kann ich da leider keinen Vorschlag zu machen.
 
Noch ne Idee ist mir gerade so eingefallen. Du kannst natürlich auch versuchen die Tastenkombination abzufange bzw. zu überprüfen d.h. wenn STRG + C gedrückt wird das er dann die Daten aus der Zwischenablage holt und speichert.
 
Noch ne Idee ist mir gerade so eingefallen. Du kannst natürlich auch versuchen die Tastenkombination abzufange bzw. zu überprüfen d.h. wenn STRG + C gedrückt wird das er dann die Daten aus der Zwischenablage holt und speichert.
Das wäre aber zuwenig.
Zitat Thomas Lindner:
Alles was Text ist ( Grafiken, etc. sind nicht nötig ) und in die Zwischenablage kopiert wird soll ( STRG + C, Symbol in Programmen etc. ) soll
Wobei das Ganze auch auch wieder auf einen Hook hinausläuft.

Gruss Homer
 
Also Ich bin zwar jetzt ne ganze weile nich hiergewesen, habe aber trotz dem ne idee! ich weiß ja nich ob die Kombination unbedingt direkt automatisch nach STRG+C sein muss. weil wenn es nämlich auch mit STRG+c und danach gleich STRG+D sein kann, dann schreibst du einfach ein Prog, das die Zwischenablage ausliest, und speichert, und du kannst selber entscheiden, was du speichern willst und was nich! damit schließt du ja dann manuel die Bilder aus;). Wenn du aber kontrollieren willst was andere an deinem Rechner so in die Zwischenablage schieben, was ich persönlich interessant fände, ;-) dann finde ich die möglichkeit mit der automatischen Abfrage der Zwischenablage noch am besten. Die muss ja nicht jede ms sein, mit Delphi zb lässt sich da ganz einfach nen Timer einstellen, und dann geht das auch nicht wirklich zu großen lasten des rechners, wenn die Abfrage zb alle 0,5s passiert. Dann gibts da auch noch so nette Komponenten, mit denen man das prog in der SysTry verschwinden lässt, oder komplett unsichtbar macht, und man es dann per kontextmenü oder tasten kombo aktivieren/deaktivieren kann.
 
Hallo,
Ich weiß ja nich ob die Kombination unbedingt direkt automatisch nach STRG+C sein muss. weil wenn es nämlich auch mit STRG+c und danach gleich STRG+D sein kann, dann schreibst du einfach ein Prog, das die Zwischenablage ausliest, und speichert, und du kannst selber entscheiden, was du speichern willst und was nich! damit schließt du ja dann manuel die Bilder aus
an sowas dachte ich auch schon. Wenn man das Speichern auf eine andere Kombination legen könnte, dann wäre es evtl sogar mit dem Windows Skripting Host mögllich - denke das soltle dann kein größeres Problem darstellen...

bye
 
Hallo nochmal,

Ok, dann mach ich mal den Anfang. Hab jetzt was kleines in VBS geschrieben. Einfach den Code kopieren - in ein File schreiben und mit *.vbs benennen. Von dem ganzen legt man dann ein Verknüpfung an und legt diese ins Startmenü, vorzugsweis zum Zubehör. Hier kann man dann dem Skript via Rightclick -> [Eigenschaften] eine Tastenkombination zuweisen (gestetet hab ichs mit [ALT]+[STRG]+C). Das Skript ließt dann den Inhalt der Zwischenablage aus und schreibt ihn in ein neues Textfile, die nach dem Schema "28-08-2003_21-24-57.txt" benannt werden. Das Verzeichnis in das geschrieben wird, kann natürlich im Skript bestimmt werden. Leider funktioniert es nur wenn ein IE installiert ist (wenn jemand weis wie ich diesen Umweg über den IE umgehen kann, möge er mir bitte bescheid geben) was aber auf Windows kein großes Problem darstellen sollte.

Hier der Code
Code:
'*****************************************************
' FIle: Clipboard2File.vbs
' Author: Andreas Gaisbauer
' Datum: 28.8.2003
'
' Das Skript Seichert den Inhalt der Zwischenablage
' in einem Textfile unter zuhilfenahme des Internet
' Explorers
'*****************************************************

Option Explicit

    Const Ordner = "c:/textfiles" 'Speicherort für 
                                  'die Textfiles

    Dim WSH 'WScript.Shell Object
    Dim FS 'Scripting.FileSystemObject Object
    Dim File 'Ausgabefile
    Dim HTMLDoc 'HTML Code der "Transferseite"
    Dim IE 'InternetExplorer Object
    Dim Timestamp  'Dateiname
    Dim Text 'zu kopierender Text  
    
    'Filename zusammenbauen
    Timestamp = CStr(FormatDateTime(Date,2))&"_"&CStr(FormatDateTime(Time,3))
    Timestamp = Replace(Timestamp, ":","-",1,-1,1)
    Timestamp = Replace(Timestamp, ".","-",1,-1,1)

    
    'HTML-Dokument erzeugen
    HTMLDoc = "<html><head><title></title></head>"& _
              "<body><form name='transfer'>"& _
              "<textarea name='buffer'></textarea>"& _
              "</form></body></html>"
    

    Set FS = CreateObject("Scripting.FileSystemObject")
    Set WSH = WScript.CreateObject("WScript.Shell")
    Set File = FS.OpenTextFile(Ordner&"/"&Timestamp&".txt",2,true)
    Set IE = WScript.CreateObject("InternetExplorer.Application")
    
    
    IE.navigate "about:" & HTMLDoc 'Dokument aufrufen
    IE.visible = 0 'IE verstecken
    Do While (IE.Busy):Loop 'warten bis IE fertig geladen
    IE.Document.transfer.buffer.select()
    IE.Document.execCommand("Paste")
    Text = IE.Document.transfer.buffer.Value
    IE.Quit
    
    
    'File schreiben
    File.WriteLine(Text)
    File.Close

'END
Ich denke das Skript ist ausreichend Kommentiert - bei fragen einfach fragen ;). Das ich es nicht vergesse, das ganze braucht einen aktiven WindowsScriptingHost (wenn nicht vorhanden: http://www.microsoft.com/downloads/...FamilyID=E74494D3-C4E1-4E18-9C6C-0EA28C9A5D9D ). Ich habs nur unter Windows XP testen können, denke aber es sollte unter 98 ebenfalls laufen...

Ciao
 

Anhänge

Zuletzt bearbeitet:

Neue Beiträge

Zurück