• Offizieller Beitrag

    Version: 2.0 ( 11.12.08 )

    Dieses Programm sammelt alle Texte aus der Zwischenablage in einem Editfeld. Sobald also der Benutzer einen Text markiert und [STRG]+[code=c] drückt, wird der Text auch in das Editfeld übernommen (angehängt).
    Zusätzlich bietet das Programm noch die Möglichkeit die gesammelten Texte abzuspeichern, sowie Dateien (deren kompletter Name & Pfad sich im Editfeld befindet) zu kopieren.

    Weitere Eigenschaften:
    - Fenster ist in der Größe veränderbar
    - Die Position und Größe des Fensters werden in einer Inidatei gespeichert, sodass das Fenster beim nächsten Start wieder genau so geöffnet wird, wie man es beendet hat.
    - Das Fenster dockt am Bildschirmrand an.
    - Der Inhalt des Editfeldes wird automatisch in einer Datei (autosave.txt) gespeichert und bei einen Programm-Neustart daraus wiederhergestellt.
    - Man kann im Traymenü mit "Settings/Start with Windows" eine Verknüpfung im Autostart anlegen. Beim Autostart wird das Programm minimiert gestartet!
    - Beim Klick auf den Schließen-Button bzw. drücken von [ALT]+[x] wird das Programm nicht beendet, sondern in die Trayleiste minimiert.
    - Zum Beenden des Programms gibt es den Hotkey [ALT]+[e] sowie einen Eintrag im Traymenü.

    Screenshot:
    ClipboardMemo-Screenshot.png

    Im ZIP-Archiv befindet sich das Script, die Icons und die kompilierte Exe.

    Fehler und/oder Verbesserungsvorschläge bitte melden! :)

    ( Version 1.1 ) Mir ist gerade selbst eine Verbesserung eingefallen. Es gibt im TotalCommander die Möglichkeit Dateien zu markieren und dann im Menü "Markieren" den Eintrag "Kopiere Namen mit Pfad in die Zwischenablage" auszuwählen. Und wenn mein Programm jetzt Dateipfade erkennt, bietet es die Möglichkeit alle Dateien, deren Dateipfad sich im Editfeld befindet, zu einem auszuwählenden Ordner zu kopieren. So kann man Dateien aus verschiedenen Verzeichnissen in ein gemeinsames Zielverzeichnis kopieren. :)

    ( Version 1.2 ) Ein paar kleine Bugs beseitigt.

    ( Version 1.3 ) Es gab noch einen Bug beim schließen des FileSelectFolders. Außerdem gibt es jetzt im Traymenü unter "Settings" die Möglichkeit das überschreiben beim "Dateien kopieren" einzustellen. Und die neuen Einträge von der Zwischenablage werden jetzt immer unten angefügt, auch wenn man den Cursor irgendwo weiter oben in das Editfeld setzt.

    ( Version 1.4 ) Das Programm kann jetzt nur noch einmal gestartet werden. Außerdem gibt es nun die Möglichkeit den Inhalt des Editfeldes wieder zurück in die Zwischenablage zu kopieren. Und wenn das Programm in den Tray minimiert ist, kann man es jetzt mit einem Doppelklick auf das Trayicon wieder anzeigen lassen.

    ( Version 1.5 ) Die Toolbarleiste gefiel mir nicht so, weshalb ich sie durch Buttons ersetzt habe (siehe Screenshot). Da funktioniert wenigstens auch der OnEvent-Mode.

    ( Version 1.6 ) Hotkey zum beenden auf [ALT]+[e] sowie den Hotkey "MinimizeToTray" auf [ALT]+[x] geändert. Die Icons befinden sich nun in der Datei "icons.dll". Test auf "\" am Ende von @ScriptDir, damit das Programm auch im Hauptpfad funktioniert.

    ( Version 1.7 ) Wenn man im Explorer eine oder mehrere Datei(en) ins Clipboard kopiert, wird nun der Pfad zu der Datei aufgenommen. So klappt das "Dateien kopieren" nicht nur mit dem TotalCommander.

    ( Version 1.8 ) Man kann nun auch Verzeichnisse in das Edit aufnehmen, die dann bei "Copy Files" komplett (inkl. Dateien und Unterverzeichnisse) in das Zielverzeichnis kopiert werden. Die Overwrite-Settings gelten auch hierfür.

    ( Version 1.9 ) Man kann im Traymenü mit "Settings/Start with Windows" eine Verknüpfung im Autostart anlegen. Beim Autostart wird das Programm minimiert gestartet!

    ( Version 2.0 ) Andocken des Fensters am Bildschirmrand. Abspeichern des Editinhaltes in eine Datei (autosave.txt), damit der Inhalt einen Programm-Neustart übersteht.

  • Hallo,

    echt n super programm
    nur ist mir aufgefallen wenn man mehr als ca 4 zeilen kopiert kackt es ab^^
    bzw nach neustart geht es einmal aba dann ist es überfordert
    macht aber nichts ich bin begeistert!!
    sowas hab ich schon lange gesucht!!

    Mfg, Padmak

    • Offizieller Beitrag

    Super Teil, echt geil. :thumbup:

    Kleiner Verbesserungsvorshlag: Eine Abfrage ob des Prog schon läuft. Man kann mehrere Instanzen von dem Prog starten. Ich denke 1 mal reicht.

    • Offizieller Beitrag

    Wird ja immer besser :thumbup:8o
    Wenn ich im Explores eine Datei anklicke und dann rechtsklick und Kopieren dann wird eine 0 in das Clipboard geschrieben .
    Kann man das irgendwie ändern das z.b. dieses kopiern ignoriert wird . Andere Lösung wäre bei diesem kopieren den Dateipfad/Name in das Clipboard einzufügen. Wäre ein Verbesserungsvorschlag für dein Script . Ich weiß nur nicht wie aufwändig das ist .

  • Hallo,
    Ich habe auch mal so etwas ähnliches gemacht... Aber ich finde deins besser ^^ Hier mal mein Code:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon

    [/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>
    #include <GUIListView.au3>

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("^!{ESC}", "_terminate")

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Input Box

    [/autoit] [autoit][/autoit] [autoit]

    $inputhide = InputBox("Fenster verstecken", "Mit welcher Taste wollen Sie das Fenster verstecken?" & @CRLF & "Für die Taste ""Pagedown"" klicken Sie auf ""Abbrechen"" oder geben ""pgdn"" ein.")
    If @error Then $hinputhide = HotKeySet("{PGDN}", "_hide")
    $inputshow = InputBox("Fenster zeigen", "Mit welcher Taste wollen Sie das Fenster zeigen?" & @CRLF & "Für die Taste ""Pageup"" klicken Sie auf ""Abbrechen"" oder geben ""pgup"" ein.")
    If @error Then $hinputshow = HotKeySet("{PGUP}", "_show")
    $hinputshow = HotKeySet("{" & $inputshow & "}", "_show")
    $hinputhide = HotKeySet("{" & $inputhide & "}", "_hide")
    MsgBox(0, "Fenster anzeigen und verstecken", $inputshow &" zeigt das Fenster" & @CRLF & $inputhide &" lässt es wieder verschwinden")

    [/autoit] [autoit][/autoit] [autoit]

    ;~ Ende Input Box

    [/autoit] [autoit][/autoit] [autoit]

    $Gui = GUICreate("Zwischenablage speichern Tool", 341, 271)
    $Version = GUICtrlCreateLabel("Version 1.2", 275, 240, 57, 17)
    $tree = _GUICtrlListView_Create($Gui, "Zwischenablage", 10, 16, 220, 240)
    $col = _GUICtrlListView_SetColumn($tree, 1, "Zwischenablage", 220)
    _GUICtrlListView_SetColumnWidth($tree, $col, 220)
    $Kopieren = GUICtrlCreateButton("Kopieren", 240, 16, 81, 33, 0)
    $Loeschen = GUICtrlCreateButton("Löschen", 240, 72, 81, 33, 0)
    $Alleloeschen = GUICtrlCreateButton("Alles löschen", 240, 128, 81, 33, 0)
    $About = GUICtrlCreateButton("About", 240, 184, 81, 33, 0)
    GUISetBkColor(0x075478)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    $max = 1000

    [/autoit] [autoit][/autoit] [autoit]

    $file = @ScriptDir & "\Zwischenablagelog.txt"
    If FileExists($file) Then FileDelete($file)
    Global $additem[$max + 1], $tree, $selecteditem, $item, $inputhide, $inputshow, $hinputhide, $hinputshow
    For $i = 1 To $max
    $additem[$i] = ""
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $Zwischenablage1 = ""
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Kopieren
    Local $item = _GuiCtrlListView_GetFocusedItem($tree)
    ClipPut(_GUICtrlListView_GetItemTextString($tree, $item))
    Case $Loeschen
    $selecteditem = _GUICtrlListView_GetItemTextString($tree, $item)
    $fileread = FileRead($file)
    $filewrite = StringReplace($fileread, $selecteditem, "***DELETED***")
    FileDelete($file)
    FileWrite($file, $filewrite)
    _GUICtrlListView_DeleteItemsSelected($tree)
    Case $Alleloeschen
    $msgbox = MsgBox(4, "Alles löschen", "Sind Sie sicher, dass Sie alles löschen wollen?")
    If $msgbox = 6 Then
    _GUICtrlListView_DeleteAllItems($tree)
    FileDelete($file)
    EndIf
    Case $About
    _About()
    EndSwitch
    $Zwischenablage2 = ClipGet()
    If $Zwischenablage2 <> $Zwischenablage1 Then _zwischenablageadd()
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _zwischenablageadd()
    For $i = 1 To $max
    If $additem[$i] = $Zwischenablage2 Then Return
    Next

    For $i = 1 To $max
    If $additem[$i] = "" Then
    FileWrite($file, @HOUR & ":" & @MIN & ":" & @SEC & " " & $Zwischenablage2 & @CRLF)
    $additem[$i] = $Zwischenablage2
    _GUICtrlListView_AddItem($tree, $Zwischenablage2)
    $Zwischenablage1 = $Zwischenablage2
    ExitLoop
    EndIf
    Next
    EndFunc ;==>_zwischenablageadd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GuiCtrlListView_GetFocusedItem($hWnd)
    For $i = 0 To _GUICtrlListView_GetItemCount($hWnd) - 1
    If _GUICtrlListView_GetItemState($hWnd, $i, $LVIS_FOCUSED) Then Return $i
    Next
    EndFunc ;==>_GuiCtrlListView_GetFocusedItem

    [/autoit] [autoit][/autoit] [autoit]

    Func _show()
    GUISetState(@SW_SHOW)
    EndFunc ;==>_show

    [/autoit] [autoit][/autoit] [autoit]

    Func _hide()
    GUISetState(@SW_HIDE)
    EndFunc ;==>_hide

    [/autoit] [autoit][/autoit] [autoit]

    Func _terminate()
    Exit
    EndFunc ;==>_terminate

    [/autoit] [autoit][/autoit] [autoit]

    Func _About()
    WinSetOnTop($Gui, "", 0)
    $MsgBox = MsgBox(64, "About", "by DeadmanFinal" & @crlf & "")
    WinSetOnTop($Gui, "", 1)
    EndFunc

    [/autoit]

    Ist nicht so gut gelungen aber man kann es anschauen :) (War noch in den Anfänger Zeiten)

    Ich finde dein Programm toll, ich denke ich werde es auch benutzen :thumbup:

    • Offizieller Beitrag

    Ok, aber wozu braucht man das?
    Bevor ich mir überlege, wie ich das umsetzen kann, stelle ich mir erstmal die Frage nach dem Sinn?
    Ich bin überzeugter TotalCommander-Benutzer. Kopieren, verschieben, löschen usw. mache ich damit. Welche Anwendungsmöglichkeit kommt in Frage für "mehrere Dateien/Bilder/etc. in der Zwischenablage"?

  • Es geht nicht speziell um Bilder. Da ich clcl einsetze, kann ich sicher sein, dass ich nicht ausversehen irgendwas Wichtiges in der Zwischenablage durch etwas neues überschreibe. Das können auch mal andere Dateien, Ordner, Bilderausschnitte etc sein. Daher muss wirklich alles zwischengespeichert werden können.

    Ich bin aber noch auf der Suche nach einer Alternative, da clcl die Zwischenablagen nicht über einen Neustart hinweg vorhält.

  • Hallo Oscar,

    magst Du das nochmal hochladen?

    (gerne mal Deine gesamte Sammlung ;) der alten Scripte, die durch die Serverumzüge verloren gegangen sind.

    An Scripts lässt sich am besten lernen.