I'm looking for a way to rotate the display by 270 degrees. I know my screen supports that (CTRL+ALT+{Arrow Right} works fine). The attached script rotates the display by 90 degrees only. Has anyone come accross this issue?
When running the attached script, either run it a second time or press CTRL+ALT+{Arrow Up} to reset the orientation to default.
$h_DLL_user32 = DllOpen("user32.dll") Global Const $DMDO_DEFAULT = 0 Global Const $DMDO_90 = 1 Global Const $DMDO_180 = 2 Global Const $DMDO_270 = 3 Global Const $_tag_DEVMODE = "CHAR dmDeviceName[32];WORD dmSpecVersion;WORD dmDriverVersion;" & _ "WORD dmSize;WORD dmDriverExtra;DWORD dmFields;LONG dmPositionx;LONG dmPositiony;DWORD dmDisplayOrientation;DWORD dmDisplayFixedOutput;" & _ "short dmColor;short dmDuplex;short dmYResolution;short dmTTOption;short dmCollate;" & _ "CHAR dmFormName[32];WORD dmLogPixels;DWORD dmBitsPerPel;DWORD dmPelsWidth;DWORD dmPelsHeight;" & _ "DWORD dmDisplayFlags;DWORD dmDisplayFrequency;" $DEVMODE = DllStructCreate($_tag_DEVMODE) DllStructSetData($DEVMODE, "dmSize", DllStructGetSize($DEVMODE)) Global Const $ENUM_CURRENT_SETTINGS = -1 Global Const $ENUM_REGISTRY_SETTINGS = -2 Local $B = DllCall($h_DLL_user32, "int", "EnumDisplaySettingsEx", "ptr", 0, "dword", $ENUM_CURRENT_SETTINGS, "ptr", DllStructGetPtr($DEVMODE), "dword", BitOR(0x00000002, 0x00000004)) ConsoleWrite(DllStructGetData($DEVMODE, "dmSize") & @CRLF) ConsoleWrite(DllStructGetData($DEVMODE, "dmDriverExtra") & @CRLF) ConsoleWrite(DllStructGetData($DEVMODE, "dmPelsWidth") & @CRLF) ConsoleWrite(DllStructGetData($DEVMODE, "dmPelsHeight") & @CRLF) ConsoleWrite(DllStructGetData($DEVMODE, "dmDisplayOrientation") & @CRLF & @CRLF) Local Const $DM_PELSWIDTH = 0x00080000 Local Const $DM_PELSHEIGHT = 0x00100000 Local Const $DM_DISPLAYORIENTATION = 0x00800000 Local Const $DM_BITSPERPEL = 0x00040000 Local Const $DM_DISPLAYFREQUENCY = 0x00400000 DllStructSetData($DEVMODE, "dmFields", BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_DISPLAYORIENTATION)) DllStructSetData($DEVMODE, "dmDisplayOrientation", $DMDO_270) Local $stmp = DllStructGetData($DEVMODE, "dmPelsWidth") DllStructSetData($DEVMODE, "dmPelsWidth", DllStructGetData($DEVMODE, "dmPelsHeight")) DllStructSetData($DEVMODE, "dmPelsHeight", $stmp) Local Const $CDS_TEST = 0x00000002 Local Const $CDS_UPDATEREGISTRY = 0x00000001 Local Const $CDS_RESET = 0x40000000 Local Const $CDS_ENABLE_UNSAFE_MODES = 0x00000100 ConsoleWrite(DllStructGetData($DEVMODE, "dmPelsWidth") & @CRLF) ConsoleWrite(DllStructGetData($DEVMODE, "dmPelsHeight") & @CRLF) ConsoleWrite(DllStructGetData($DEVMODE, "dmDisplayOrientation") & @CRLF & @CRLF) $B = DllCall($h_DLL_user32, "int", "ChangeDisplaySettingsEx", "ptr", 0, "ptr", DllStructGetPtr($DEVMODE), "hwnd", 0, "int", BitOR($CDS_RESET, $CDS_UPDATEREGISTRY), "ptr", 0) ConsoleWrite($B[0] & @TAB & @error & @CRLF) Local Const $HWND_BROADCAST = 0xffff Local Const $WM_DISPLAYCHANGE = 0x007E $i_BitsPP = DllStructGetData($DEVMODE, "dmBitsPerPel") $i_Width = DllStructGetData($DEVMODE, "dmPelsWidth") $i_Height = DllStructGetData($DEVMODE, "dmPelsHeight") DllCall($h_DLL_user32, "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, "int", $i_BitsPP, "int", $i_Height * 2 ^ 16 + $i_Width)
Best Regards









