Ein weiteres kleines MultiClipboard für den Nummernblock

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

fredchf
Posts: 54
Joined: 30 Sep 2013, 14:55

Ein weiteres kleines MultiClipboard für den Nummernblock

23 Nov 2020, 06:58

Hallo!
Inspiriert von dem alten Autohotkey (Basic) Projekt der 'CT namens "ac'tivAid", habe ich mir meine eigene Verwaltung der Zwischenablagen erstellt.

Features:
  • nutzt den Nummernblock (0-9) zur Verwaltung der Zwischenablagen
  • gespeichert wird Text inkl. Formatierung
  • die Inhalte stehen auch nach Neustart wieder zur Verfügung
  • kopiert man aus Windows Explorer (oder Total Commander) werden Dateien und Ordner als Text kopiert
Anwendung:
  • Win+Numpad0-9 zum Kopieren
  • STRG+Numpad0-9 zum Einfügen
  • STRG+ALT+NumPad0-9 zum Einfügen in Zwischenablage (brauche ich manchmal für SAP)
  • STRG+WIN+Numpad0-9 zum Einfügen von Plain Text

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#SingleInstance, force
EnvGet, username, Username

; ---------------------Settings-----------------------------------
hk_copy		:= "#"		; Modulartaste kopieren #	= Windowstaste			kopieren auf den Nummernblock
hk_paste1	:= "^"		; Modulartaste einfügen ^	= STRG					einfügen vom Nummernblock
hk_paste2	:= "^!"		; Modulartasten einfügen ^!	= STRG Alt			einfügen in Zwischenablage
hk_paste3	:= "^#"		; Modulartasten einfügen ^#	= STRG Win				einfügen Plain Text
hk_num		:= "Numpad"					;Numpad oder Zahlentasten
hk_zz		:= 10															; Anzahl (max 10)
; --------------------------------------------------------
Menu, Tray, Add, alle Zwischenablagen löschen, clear
; --------------------------------------------------------
Loop, % hk_zz	; kopieren
	Hotkey, % hk_copy hk_num A_Index - 1, handler0, On T1
Loop, % hk_zz	; einfügen
	Hotkey, % hk_paste1 hk_num A_Index - 1, handler1, On T1
Loop, % hk_zz	; einfügen nur in Zwischenablage
	Hotkey, % hk_paste2 hk_num A_Index - 1, handler2, On T1
Loop, % hk_zz	; einfügen nur in Zwischenablage
	Hotkey, % hk_paste3 hk_num A_Index - 1, handler3, On T1
gosub, load
return
; --------------------------------------------------------
handler0:		; kopieren
	oldclip := ClipboardAll
	Clipboard	:= ""
	n	:=	StringRight(A_ThisHotkey, 1)	; nur der Zähler
	Send ^c
	ClipWait, 1
	
	; wenn aus Windows Explorer kopiert wird, werden die Dateien als Text gespeichert
	if WinActive("ahk_class CabinetWClass") or WinActive("ahk_class TTOTAL_CMD")
		{
			Clipboard = %Clipboard%
			Clip%n% := Clipboard
		}
	else
		Clip%n% := ClipboardAll
	FileDelete, % "clip" n
	FileAppend, % ClipboardAll, % "clip" n
	Sleep, 500
	Clipboard := oldclip
return
; --------------------------------------------------------
handler1:		; einfügen
	oldclip := ClipboardAll
	n	:=	StringRight(A_ThisHotkey, 1)	; nur der Zähler
	Clipboard := ""
	Clipboard := Clip%n%
	ClipWait, 1
	if Clipboard
		Send ^v
	Sleep, 500
	Clipboard := oldclip
return
; --------------------------------------------------------
handler2:		; einfügen nur in Zwischenablage
	n	:=	StringRight(A_ThisHotkey, 1)	; nur der Zähler
	Clipboard := ""
	Clipboard := Clip%n%
	ClipWait, 1
return
; --------------------------------------------------------
handler3:		; einfügen Plain Text
	oldclip := ClipboardAll
	n	:=	StringRight(A_ThisHotkey, 1)	; nur der Zähler
	Clipboard := ""
	Clipboard := Clip%n%
	Clipboard = %Clipboard%
	ClipWait, 1
	if Clipboard
		Send ^v	
	Sleep, 500
	Clipboard := oldclip
return
; --------------------------------------------------------
load:		; alte Clipboards laden beim Start
	Loop, % hk_zz
	{
		IfNotExist, % "clip" A_Index
			continue
		FileRead, tmp, % "*c clip" A_Index
		Clip%A_Index% := tmp
	}
return
; --------------------------------------------------------
clear:		; alle Clipboards löschen
	Loop, % hk_zz + 100
	{
		IfNotExist, % "clip" A_Index
			continue
		FileDelete,  % "clip" A_Index
		Clip%A_Index% := ""
	}
	Clipboard := ""
return
; --------------------------------------------------------
StringRight(i,z)	; Funktion Rechts
	{
		StringRight, t, i, % z
		; FileAppend, % t " - " i "`t" A_Now "``t" A_ThisLabel "`n", log.txt
		return t
	}
/*
Last edited by fredchf on 01 Dec 2020, 12:53, edited 3 times in total.
just me
Posts: 9450
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Ein weiteres kleines MultiClipboard für den Nummernblock

23 Nov 2020, 07:13

Moin fredchf,

schön, auch von Dir mal wieder etwas zu hören.

Ich habe mit vor Jahren an den 'Formatierungen' die Zähne ausgebissen. Bist Du sicher, dass das jetzt so einfach funktioniert? Damals haben einzelne Formatierungen manchmal nicht einmal das Schließen und Wiederöffnen der Quellanwendung überlebt. Es wurde dann zwar etwas 'formatiert', das Ergebnis hatte aber oft mit der ursprünglichen Formatierung nicht viel gemein.
fredchf
Posts: 54
Joined: 30 Sep 2013, 14:55

Re: Ein weiteres kleines MultiClipboard für den Nummernblock

23 Nov 2020, 07:41

Moin denick,
meine Tests in M$ Office ergaben bisher keine Probleme. Die Formatierungen sind auch nach Neustart vollständig (soweit ich das sehen kann).

VG

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 25 guests