2017-09-27 7 views
0

J'ai problème avec rotation du moniteur programmatiqueSeule rotation de l'écran miroir - Python

import win32api as win32 
import win32con 
MY_SCREEN_NUMBER = 1 
device = win32.EnumDisplayDevices(None,MY_SCREEN_NUMBER) 
dm = win32.EnumDisplaySettings(device.DeviceName,win32con.ENUM_CURRENT_SETTINGS) 
dm.DisplayOrientation = win32con.DMDO_180 
dm.Fields = dm.Fields & win32con.DM_DISPLAYORIENTATION 
win32.ChangeDisplaySettingsEx(device.DeviceName,dm) 

code écran rotatif uniquement dans le sens opposé, par exemple

  • si l'écran dans win32con.DMDO_DEFAULT il ne peut le faire pivoter dans win32con.DMDO_180,
  • si l'écran dans win32con.DMDO_90 ne tourne que dans win32con.DMDO_270
  • sinon il me donne -2 (DISP_CHANGE_BADMODE) code d'erreur e

Mais je peux tourner avec succès avec des fenêtres params écran graphiques paramètres

Comment puis-je faire pivoter l'écran correctement?

Répondre

0
def rotateTo(degree): 
    import win32api as win32 
    import win32con 
    MY_SCREEN_NUMBER = 1 
    device = win32.EnumDisplayDevices(None,MY_SCREEN_NUMBER) 
    dm = win32.EnumDisplaySettings(device.DeviceName,win32con.ENUM_CURRENT_SETTINGS) 
    newDisplayOrientationInWin32Format = degree/90 
    currentDisplayOrientationInWin32Format = dm.DisplayOrientation 
    if(newDisplayOrientationInWin32Format + currentDisplayOrientationInWin32Format) % 2 == 1 : #test the new resolution on the perpendicular to the previous 
     tmp = dm.PelsHeight 
     dm.PelsHeight=dm.PelsWidth 
     dm.PelsWidth=tmp 
    dm.DisplayOrientation = newDisplayOrientationInWin32Format 
    return win32.ChangeDisplaySettingsEx(device.DeviceName,dm) 

J'ai vérifié et trouvé https://msdn.microsoft.com/en-us/library/ms812499.aspx exemple C, je dois échanger la hauteur et la largeur, mais ils ne pas tester la nouvelle résolution sur la perpendiculaire à la précédente. J'ai mis à jour le code avec ce test et il commence à travailler dans n'importe quelle orientation d'écran possible pour moi.