Code: Select all
#NoEnv
#SingleInstance, force
SetBatchLines, -1
Gui, -Caption +AlwaysOnTop +hwndListBoxClipViewer
Gui +Delimiterµ
Gui, Margin , 0, 0
Gui, Font, s12 w500, Verdana
Gui, Color, FFFF00
Menu, Tray, NoStandard
Menu, tray, Icon, Data\icon.ico
Menu, tray, Tip, ZwischenAblage verwalten
Menu, Tray, Add ; Erstellt eine Trennlinie.
Menu, Tray, Add, Öffnen, Oeffnen
Menu, Tray, Add, Automatisch mit Window starten, MitWindowStarten
Menu, Tray, Add, Hotkey definieren, HotKeyFestlegen
Menu, Tray, Add, Beenden, Beenden
Menu, Tray, Default, Öffnen
If !FileExist(A_Startup "\" A_ScriptName ".lnk")
Menu, Tray, UnCheck, Automatisch mit Window starten
Else
Menu, Tray, Check, Automatisch mit Window starten
Menu, ZwischenAblageKontextMenü, Add, In die Zwischenablage, InZwischenAblage
Menu, ZwischenAblageKontextMenü, Add, Zu Favoriten hinzufügen, inFavoriten
Menu, ZwischenAblageKontextMenü, Add, Löschen, Delete
Menu, ZwischenAblageKontextMenü, Default, In die Zwischenablage
Menu, FavoritenKontextMenü, Add, In die Zwischenablage, Fv_InZwischenAblage
Menu, FavoritenKontextMenü, Add, Löschen, Fv_Delete
Menu, FavoritenKontextMenü, Default, In die Zwischenablage
Gui, Add, Edit, vSuchWert gSuchEreignis w200, Suchen
Gui, Add, Text, w200 h1 0x7
Gui, Add, ListBox, r20 w200 vZwischenAblage gZwischenAblage_g +HwndZwischenAblageHWND,
Gui Add, Button, +Default gEnter_g Hide w1, ZwEnter
GoSub, ListBox_Laden
Gui, Add, Text, w200 h1 0x7
Gui, Add, ListBox, r10 w200 xm vFavoriten gFavoriten_g +HwndFavoritenHWND ,
GoSub, Favoriten_Laden
Gui Add, Button, +Default gFvEnter_g Hide w1, FvEnter
Gui, Font, s8 w400, Verdana
Gui, Add, StatusBar,, % "Zwischenablage: " Ner.length() " Favoriten: " StrSplit(favoriten, "µ", "`n").MaxIndex() - 1
Gui, Font, Default
WinSet, TransColor, FFFF00
WinSet, Transparent, 0 , ahk_id %ListBoxClipViewer%
Gui, Show , Autosize Hide , ListBox Viewer
OnClipboardChange("ZwischenablageG")
OnMessage( 0x200, "WM_MOUSEMOVE" )
OnMessage(0x201, "WM_LBUTTONDOWN")
IniRead, GespeicherteHotKey, Data\Settings.ini, HotKey, DefaultHotKey
Hotkey, IfWinNotExist, ahk_id %ListBoxClipViewer%
Hotkey, %GespeicherteHotKey% , FensterZeigen
Hotkey, IfWinNotExist
Return
esc::
ExitApp
return
FensterZeigen:
Gui, Show
Return
/*
#If WinExist("ahk_id " ListBoxClipViewer)
^Down::
;GuiControl, Focus, ZwischenAblage
GuiControl, Choose, ZwischenAblage, 1
#If
Return
*/
Enter_g:
Gui +OwnDialogs
GuiControl, -AltSubmit, ZwischenAblage
GuiControlGet, AusgeWaehlteZeile, , Zwischenablage
Clipboard := AusgeWaehlteZeile
Gui, Hide
Return
FvEnter_g:
GuiControl, -AltSubmit, ZwischenAblage
GuiControlGet, AusgeWaehlteZeile, , Favoriten
Clipboard := AusgeWaehlteZeile
Gui, Hide
Return
InZwischenAblage:
Gui +OwnDialogs
GuiControl, -AltSubmit, ZwischenAblage
GuiControlGet, AusgeWaehlteZeile, , Zwischenablage
if (AusgeWaehlteZeile = "")
Return
tooltip, AusgeWaehlteZeile
Clipboard := AusgeWaehlteZeile
Gui, Hide
Return
InFavoriten:
GuiControl, -AltSubmit, ZwischenAblage
GuiControlGet, AusgeWaehlteZeile, , Zwischenablage
if (AusgeWaehlteZeile = "")
Return
FileAppend, %AusgeWaehlteZeile%µ, Data\favoriten.diz
GoSub, Favoriten_Laden
Return
Delete:
GuiControl, +AltSubmit, ZwischenAblage
GuiControlGet, Position ,, ZwischenAblage
if (Position = "")
Return
;if (A_GuiEvent = "DoubleClick") && (SuchWert = "")
if (SuchWert = "")
{
Control, Delete, %Position% , , ahk_id %ZwischenAblageHWND%
Geloescht := Ner[Position]
FileDelete, Data\%Geloescht%
EntfernterWert := Ner.RemoveAt(Position)
}
;if (A_GuiEvent = "DoubleClick") && (SuchWert != "")
if (SuchWert != "")
{
Control, Delete, %Position% , , ahk_id %ZwischenAblageHWND%
DateiAusSucheLoeschen := Fi[Position]
FileDelete, Data\%DateiAusSucheLoeschen%
IndexAusSucheLoeschen := Fi.RemoveAt(Position )
}
GuiControl, -AltSubmit, ZwischenAblage
Return
Fv_InZwischenAblage:
GuiControl, -AltSubmit, Favoriten
GuiControlGet, AusgeWaehlteZeile, , Favoriten
if (AusgeWaehlteZeile = "")
Return
Clipboard := AusgeWaehlteZeile
Gui, Hide
Return
Fv_Delete:
GuiControlGet, AusgeWaehlteZeile, , Favoriten
if (AusgeWaehlteZeile = "")
Return
FileRead, loescheFav, Data\favoriten.diz
NewFavoriten := StrReplace(loescheFav, AusgeWaehlteZeile "µ", "", WieVielTreffer)
if (WieVielTreffer > 0)
{
FileDelete, Data\favoriten.diz
FileAppend, %NewFavoriten%, Data\favoriten.diz
}Else {
MsgBox, Kann keinen entsprechenden Eintrag finden.
}
GoSub, Favoriten_Laden
Return
ZwischenAblage_g:
GuiControl, +Default, ZwEnter
if (A_GuiEvent = "DoubleClick")
{
GuiControl, -AltSubmit, ZwischenAblage
GuiControlGet, AusgeWaehlteZeile, , Zwischenablage
if (AusgeWaehlteZeile = "")
Return
Clipboard := AusgeWaehlteZeile
Gui, Hide
}
Return
Favoriten_g:
GuiControl, +Default, FvEnter
if (A_GuiEvent = "DoubleClick")
{
GuiControl, -AltSubmit, Favoriten
GuiControlGet, AusgeWaehlteZeile, , Favoriten
if (AusgeWaehlteZeile = "")
Return
Clipboard := AusgeWaehlteZeile
Gui, Hide
}
Return
SuchEreignis:
Gui, Submit, NoHide
Gui +OwnDialogs
GoSub, ListBox_Laden
Fi := []
;ControlGet, ZwischenAblage_ListBox, List,,, % "ahk_id " ZwischenAblageHWND ; holt sich die komplette liste
GuiControlGet, SuchText ,, SuchWert
GuiControl,, ZwischenAblage, µ ;Listbox inhalt löschen
GuiControl, -Redraw, ZwischenAblage
k := 1
For i, v in Gis
{
If (SuchWert = "") || InStr(v, SuchWert)
{
GuiControl,, ZwischenAblage, %v%
Fi[k] := Ner[i]
k++
}
}
GuiControl, +Redraw, ZwischenAblage
SB_SetText("Es gibt " . k -1 . " treffer!")
Return
GuiContextMenu:
if (A_GuiControl = "ZwischenAblage")
Menu, ZwischenAblageKontextMenü, Show, %A_GuiX%, %A_GuiY%
if (A_GuiControl = "Favoriten")
Menu, FavoritenKontextMenü, Show, %A_GuiX%, %A_GuiY%
Return
Oeffnen:
WinGet, FensterStyle, Style, ahk_id %ListBoxClipViewer%
If (FensterStyle = "")
Gui, Show
Else
Gui, Hide
Return
MitWindowStarten:
If !FileExist(A_Startup "\" A_ScriptName ".lnk")
{
FileCreateShortcut %A_ScriptFullPath%, %A_Startup%\%A_ScriptName%.lnk,%A_WorkingDir%, /AutoStart, Startet Zwischenablage Monitor beim start., %A_WorkingDir%\Data\icon.ico,,,7
Menu, Tray, Check, Automatisch mit Window starten
}
Else {
FileDelete %A_Startup%\%A_ScriptName%.lnk
Menu, Tray, UnCheck, Automatisch mit Window starten
}
Return
HotKeyFestlegen:
Gui HotKeyDef: +OwnDialogs
Gui, Submit, NoHide
Gui, HotKeyDef:New, -Caption +ToolWindow, HotKey festlegen
Gui, HotKeyDef: Add, Hotkey, vGewaehlterHotkey w160, %GespeicherteHotKey%
Gui, Add, Button, w80 gHotKeyDefGuiClose, Abbrechen
Gui, Add, Button, Default w80 x+ gHotKeyDefOk, OK
Gui, HotKeyDef:Show, Autosize
Gui, Add, Button, Default w80, OK
Return
HotKeyDefOk:
Gui, HotKeyDef:Default
GuiControlGet, myHotKey ,, GewaehlterHotkey
IniWrite, %myHotKey%, Data\Settings.ini, HotKey, DefaultHotKey
Reload
Return
HotKeyDefGuiClose:
HotKeyDefGuiEscape:
Gui, destroy
Return
GuiEscape:
Gui, Hide
Return
Beenden:
GuiClose:
ExitApp
Return
ListBox_Laden:
Dateiliste := DateiListeHolen()
GuiControl,, ZwischenAblage, µ ;Listbox inhalt löschen
Global Ner := []
Global Gis := []
GuiControl, -Redraw, ZwischenAblage
Loop, parse, Dateiliste, `n, `r
{
FileRead, Inhalt, Data\%A_LoopField%
Ner[A_index] := A_LoopField
Gis[A_index] := Inhalt
GuiControl,, ZwischenAblage , %inhalt%
}
GuiControl, +Redraw, ZwischenAblage
Return
Favoriten_Laden:
FileRead, favoriten, Data\favoriten.diz
GuiControl,, Favoriten, µ ;Listbox inhalt löschen
GuiControl, -Redraw, Favoriten
GuiControl,, Favoriten, %favoriten%
GuiControl, +Redraw, Favoriten
Return
ZwischenablageG(Type)
{
If (Type = 1)
{
If !FileExist(Clipboard)
{
vorhanden := 0
For i, v in Gis
{
If (v = Clipboard)
{
FileDelete, % "Data\" Ner[i]
FileAppend, %Clipboard%, Data\%A_Now%.txt
Vorhanden := 1
return
}
}
if !vorhanden
FileAppend, %Clipboard%, Data\%A_Now%.txt
;Dateien Löschen, die mehr als 20 sind
Dateiliste := DateiListeHolen()
If (Ersten20 := InStr(Dateiliste, "`n", 0, 1, 20))
DieErsten20 := SubStr(Dateiliste, Ersten20)
Loop, Parse, DieErsten20 , `n
{
if (A_LoopField = "")
continue
FileDelete, Data\%A_LoopField%
}
GoSub, ListBox_Laden
}
}
}
xZwischenablageG(Type)
{
If !(Type = 1)
Return
Loop, 10 {
Try
{
ClipAlt := Clipboard
}
Catch
{
Sleep, 1000
continue
}
break
}
If FileExist(ClipAlt)
Return
vorhanden := 0
For i, v in Gis
{
If (v = ClipAlt)
{
FileDelete, % "Data\" Ner[i]
FileAppend, %ClipAlt%, Data\%A_Now%.txt
Vorhanden := 1
break
}
}
if (vorhanden = 0)
FileAppend, %ClipAlt%, Data\%A_Now%.txt
;Dateien Löschen, die mehr als 20 sind
Dateiliste := DateiListeHolen()
If (Ersten20 := InStr(Dateiliste, "`n", 0, 1, 20))
DieErsten20 := SubStr(Dateiliste, Ersten20)
Loop, Parse, DieErsten20 , `n
{
if (A_LoopField = "")
continue
FileDelete, Data\%A_LoopField%
}
GoSub, ListBox_Laden
}
DateiListeHolen()
{
Dateiliste := ""
Loop, Files, Data\*.txt
Dateiliste .= A_LoopFileName "`n"
Dateiliste := Trim(Dateiliste, "`n")
Sort, Dateiliste , NR
Return % Dateiliste
}
WM_LBUTTONDOWN()
{
if (A_GuiControl = "SuchWert") {
GuiControl,, SuchWert,
}
}
WM_MOUSEMOVE( wparam, lparam, msg, hwnd )
{
if wparam = 1 ; LButton
PostMessage, 0xA1, 2,,, A ; WM_NCLBUTTONDOWN
}