Announcement

Collapse
No announcement yet.

ChangeDisplaySettings(...) API Vista

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ChangeDisplaySettings(...) API Vista

    Wir arbeiten grad an einem MFC Projekt unter VS2005 für Windows Vista.
    Wir wollen nun via der API Funktion ChangeDisplaySettings(...) die Display Auflösung des Systems verändern.
    Nur leider funktioniert das unter Vista nicht.
    Wir bekommen dort nur den Returnvalue BadMode von dieser Funktion.
    Unter XP greift die Funktion mit den selben Einstellungen sofort.
    Was den Display Mode betrifft verwendet wir genau die Werte die wir als gültige Einstellungen vorher abgefragt haben (EnumDisplayDevices).
    Auch Versuche mit ChangeDisplaySettingsEx haben Nichts gebracht.
    Wir haben den Code bereits auf 2 verschiedenen Vista Rechnern (unterschiedliche Grafik Adapter) untersucht.
    Leider mit dem selben Ergebnis.

    Anfangs dachten wir, dass es vielleicht das Vista UAC sein könnte - das ist aber bereits abgedreht.

    Beispielcode:

    DevMode.dmPelsWidth = 800;
    DevMode.dmPelsHeight = 600;
    DevMode.dmFields=DM_PELSWIDTH|DM_PELSHEIGHT;

    ::ChangeDisplaySettings(&DevMode, CDS_GLOBAL | CDS_UPDATEREGISTRY);

    Hat wer von Euch eine Idee woran es liegen könnte?
    Oder hat vielleicht einer Idee wie man die Auflösung auf anderem Weg ändern könnte?

  • #2
    Versuch mal

    DM_BITSPERPEL
    und
    DM_DISPLAYFREQUENCY

    auch zu setzen
    Christian

    Comment


    • #3
      Hab schon versucht DevMode mit allen Structbestandteilen zu fuellen - leider ohne Erfolg.
      Was mich stört ist, dass es unter XP perfekt funktioniert.

      Comment


      • #4
        Es gibt noch
        ChangeDisplaySettingsEx

        Könnte mir vorstellen, dass es unter Vista an den Rechten liegt? Das Programm hat nicht das Recht die Auflösung zu ändern??

        Solltest du die Lösung finden, poste sie doch bitte hier..
        Christian

        Comment


        • #5
          Hab es jetzt geschafft.
          Das Problem lag im initialisieren des Structs für DEVMODE. Unter XP funktioniert es ohne die initialisierung von dmSize auf die Größe von DEVMODE. Unter Vista muß es initialisiert werden.
          Danke für die Bemuehungen :-)

          Comment

          Working...
          X