Ich habe es geschrieben, weil ich im Betrieb immer mal irgendwohin mußte, und mir oft nicht gemerkt habe wann ich los bin, und so nicht genau wußte wie lange die Aktion gedauert hat. Die Zeit sollte aber immer in ein Ticketsystem eingetragen werden.
Die Lösung:
Während ich weg war, war auch der der Rechner gesperrt. Entweder habe ich selber win+l gedrückt, oder der pc wurde nach kurzer zeit automatisch gesperrt.
Das Skript erfasst die Sperrzeiten. Ich hatte es immer im Autostartordner.
Code: Select all
#SingleInstance ignore
global tiptext, lockfile, log
lockfile:="locktimes.txt"
log:=1 ;lock wird geloggt (lockfile)
Tiptext:=""
FormatTime, thisday , %A_now%, dd.MM.yyyy HH:mm
FileAppend,`n`n%thisday% `n================`n,%lockfile%
menutitle:="verLockte Zeiten"
Menu, tray,add, info
Menu, tray,Disable, info
Menu, tray,Rename, info , %menutitle%
Menu, tray, add
Menu, Tray, Tip, %Tiptext%
Menu, tray, add, Alle
Menu, tray, default, Alle
Menu, tray, add, Beenden
Menu, tray, NoStandard
OnMessage(0x11, "WM_WTSSESSION_CHANGE")
return
info:
return
alle:
MsgBox, % Tiptext
return
beenden:
exitapp
return
WM_WTSSESSION_CHANGE(wParam, lParam, Msg, hWnd){
static init:=(DllCall( "Wtsapi32.dll\WTSRegisterSessionNotification", UInt, A_ScriptHwnd, UInt, 1) && OnMessage(0x02B1, "WM_WTSSESSION_CHANGE")), locked:=0, i:=0
If (wParam=0x7){ ; lock
locked:=a_now
}Else If (wParam=0x8){ ; unlock
EnvSub, paused, %locked%, min
FormatTime, Pause_End , %A_now%, HH:mm
FormatTime, Pause_Start , %locked%, HH:mm
pause := Pause_Start " - " Pause_End ", " paused " m `n"
tiptext .= pause
if log
FileAppend,% pause,%lockfile%
Sort Tiptext, R D`n
Menu, Tray, Tip, %Tiptext%
sleep,3000
TrayTip , Mon. Sperrzeiten (Uhrzeit`, Dauer), %Tiptext%, 3, 1
}
}