Ich präsentiere: GeekTime.
Spoiler anzeigen
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
Global $switch=0,$ossi=0
GUICreate("GeekTime",400,60,0,0,$WS_POPUP,$WS_EX_TOPMOST)
GUISetBkColor(0xffffff)
$mainlabel=GUICtrlCreateLabel("fünf nach halb sieben",10,10,380,50)
GUICtrlSetFont(-1,25,800)
GUICtrlSetColor(-1,0x000000)
$close=GUICtrlCreateButton("x",380,0,20,20)
$anders=GUICtrlCreateButton("/",380,20,20,20)
AdlibRegister("_Aktualisieren",30000)
While Sleep(50)
$mgp=MouseGetPos()
If $mgp[0]=0 And $mgp[1]=0 Then
Do
Sleep(50)
$mgp=MouseGetPos()
Until $mgp[0] <> 0 Or $mgp[1] <> 0
$switch=1-$switch
Switch $switch
Case 1
_show()
Case 0
_hide()
EndSwitch
EndIf
If $switch Then
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE,$close
_hide()
Exit
Case $anders
$ossi = 1- $ossi
_show()
EndSwitch
EndIf
WEnd
Func _getGeekTime()
$hour=Mod(@HOUR,12)
$min=@MIN-Mod(@MIN,5)
Switch $ossi
Case 0
If $min >= 25 Then $hour += 1
$hour=Mod($hour,12)
Switch $min
Case 0
$r="(Um)"
Case 5
$r="Fünf nach"
Case 10
$r="Zehn nach"
Case 15
$r="Viertel nach"
Case 20
$r="Zwanzig nach"
Case 25
$r="Fünf vor halb"
Case 30
$r="Halb"
Case 35
$r="Fünf nach halb"
Case 40
$r="Zwanzig vor"
Case 45
$r="Viertel vor"
Case 50
$r="Zehn vor"
Case 55
$r="Fünf vor"
EndSwitch
Case 1
If $min >= 5 Then $hour += 1
$hour=Mod($hour,12)
Switch $min
Case 0,5
$r="(Um)"
Case 10
$r="Gleich viertel"
Case 15,20
$r="Viertel"
Case 25
$r="Gleich halb"
Case 30
$r="Halb"
Case 35
$r="Kurz nach halb"
Case 40
$r="Kurz vor dreiviertel"
Case 45
$r="Dreiviertel"
Case 50
$r="Kurz nach dreiviertel"
Case 55
$r="Kurz vor"
EndSwitch
EndSwitch
$r &=" "
Switch $hour
Case 0
$r &= "zwölf"
Case 1
$r &= "eins"
Case 2
$r &= "zwei"
Case 3
$r &= "drei"
Case 4
$r &= "vier"
Case 5
$r &= "fünf"
Case 6
$r &= "sechs"
Case 7
$r &= "sieben"
Case 8
$r &= "acht"
Case 9
$r &= "neun"
Case 10
$r &= "zehn"
Case 11
$r &= "elf"
EndSwitch
Return $r
EndFunc
Func _hide()
For $i=100 To 1 Step -5
Sleep(5)
WinMove("GeekTime","",0,-60+($i/100)*60)
WinSetTrans("GeekTime","",$i/100*255)
Next
GUISetState(@SW_HIDE)
EndFunc
Func _show()
_aktualisieren()
WinMove("GeekTime","",400,-60)
GUISetState(@SW_SHOW)
WinSetTrans("GeekTime","",0)
For $i=1 To 100 Step 5
Sleep(5)
WinMove("GeekTime","",0,-60+($i/100)*60)
WinSetTrans("GeekTime","",$i/100*255)
Next
EndFunc
Func _aktualisieren()
GUICtrlSetData($mainlabel,_getGeekTime())
EndFunc
Jeder Geek kennt das, er wird nach der Uhrzeit gefragt und antwortet (wahrheitsgemäß) mit "23:43". Da das normale Menschen nicht so mögen, kommt hier die Lösung: GeekTime läuft permanent im Hintergrund. Beim Bewegen der Maus in die obere linke Ecke wird ein kleines Fenster eingeblendet, welches im obigen Beispiel ausgibt "Zwanzig vor zwölf".
Todo:
Ossi-mode ("Dreiviertel Zwölf")- Ungenauigkeitsoption (nur in Viertelstunden zählen)