Code: Select all
; 'scr(een)Rotate'-Funktion basierend auf Code von AHK-Mitglied 'malcev':
; https://www.autohotkey.com/boards/viewtopic.php?p=384743#p384743
; Parameter ...
; Uhrzeitmodus: 3/6/9/12
; Winkelgradmodus: 0/90/180/270/360
; Richtungmodus: o/r/u/l
F1::scrRotate(3) ; rotiert auf "3 Uhr"
F2::scrRotate(180) ; rotiert auf 180°
F3::scrRotate(9) ; rotiert auf "9 Uhr"
F4::scrRotate(360) ; rotiert auf 360°
F5::scrRotate("u") ; rotiert nach unten
F6::scrRotate("default") ; rotiert auf default position ("12 Uhr" AKA 0°/360°)
F7::scrRotate("d") ; rotiert auf d(efault) position ("12 Uhr" AKA 0°/360°)
F8::scrRotate() ; wirft 'parameter advise'-message aus.
scrRotate(param:="") {
if param not in 0,3,6,9,12,90,180,270,360,default,d,o,r,u,l
MsgBox % "Valid parameters are: 0/3/6/9/12/90/180/270/360/default/d/o/r/u/l"
else {
mode:= (param=0) || (param=12) || (param=360) || (param=o)? DMDO_DEFAULT:=0
: (param=9) || (param=90) || (param=r) ? DMDO_90 :=1
: (param=6) || (param=180) || (param=u) ? DMDO_180 :=2
: (param=3) || (param=270) || (param=l) ? DMDO_270 :=3
: (param=default) ? DMDO_DEFAULT:=0
: (param=d) ? DMDO_DEFAULT:=0
VarSetCapacity(DEVMODE, 220, 0)
NumPut(220, DEVMODE, 68, "short") ; dmSize
DllCall("EnumDisplaySettingsW", "ptr", 0, "int", -1, "ptr", &DEVMODE)
width := NumGet(DEVMODE, 172, "uint")
height := NumGet(DEVMODE, 176, "uint")
NumPut(width, DEVMODE, 176, "int")
NumPut(height, DEVMODE, 172, "int")
NumPut(mode, DEVMODE, 84, "int") ; dmDisplayOrientation
DllCall("ChangeDisplaySettingsW", "ptr", &DEVMODE, "uint", 0)
}
}