Autor Beitrag
mtin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 177

Win XP SP2
BDS2006 Enterprise
BeitragVerfasst: Mo 24.04.06 19:17 
Ich möchte für ein bestimmtes Projekt die Bildschirmauflösung auf 640x480 ändern. Dies ist mittels dieser ChangeResolution-Funktion auch einwandfrei möglich, allerdings wird die Auflösung da nach dem Programmende wieder zurückgesetzt.

Ich habe aber mehrere Anwendungen, die sich der Reihe nach selbst Aufrufen (erst einstellungen.exe, dann Auswahl.exe und dann noch einige weitere)
Ich könnte natürlich immer beim Programmstart einer dieser Programme die Auflösung ändern, allerdings hätte ich es lieber so, dass ich ganz am Anfang die Auflösung ändere und die dann so bleibt bis ich die mit einem anderen Befehl wieder zurückstelle!

Ist das auch möglich?
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Di 25.04.06 09:42 
Ein Blick in die MSDN für ChangeDisplaySettings() hilft weiter:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Value   Meaning
[b]0[/b]                   The graphics mode for the current screen will be changed dynamically.
CDS_FULLSCREEN           The mode is temporary in nature. Windows NT/2000/XP: If you change to and from another desktop, this mode will not be reset.
[b]CDS_GLOBAL[/b]           The settings will be saved in the global settings area so that they will affect all users on the machine. Otherwise, only the settings for the user are modified. This flag is only valid when specified with the CDS_UPDATEREGISTRY flag.
[b]CDS_NORESET[/b]           The settings will be saved in the registry, but will not take effect. This flag is only valid when specified with the CDS_UPDATEREGISTRY flag.
[b]CDS_RESET[/b]           The settings should be changed, even if the requested settings are the same as the current settings.
[b]CDS_SET_PRIMARY[/b]   This device will become the primary device.
[b]CDS_TEST[/b]                The system tests if the requested graphics mode could be set.
[b]CDS_UPDATEREGISTRY[/b]      The graphics mode for the current screen will be changed dynamically and the graphics mode       will be updated in the registry. The mode information is stored in the USER profile.


Das Flag "CDS_UPDATEREGISTRY" dürftes du suchen. Beachte das du selbst dafür sorgen mußt, das die orginalen Einstellungen gespeichert und wiederhergestellt werden. Du kannst sie nach der Änderung nicht abfragen, denn du hast sie überschrieben.

ABER! Ein Absturz oder eine nicht vorgesehenes Beenden deines Programmes sorgt nun für die dauerhafte Veränderung der Einstellungen des Nutzers. Ich persönlich mißbillige Programme die soetwas machen.

MfG Simon
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Di 25.04.06 16:03 
Wieso muss sich die Anwendung eigentlich beenden. Du könntest es doch zum Beispiel auch so machen, dass du die Settings startest und diese dann die Kindprocesse anwirft und so lange wartet bis sie wieder weg sind. Bei Spielen ist das durchaus nichts außergewöhnliches und sollte deine Anwendung aus unerfindlichen Gründen abstürzen wird dich der Nutzer nicht bis in alle Ewigkeiten hassen.

Selbst wenn du sinnvoll und sicher die Auflösung zum Ende hin zuzücksetzt. Ist dir schon mal in den Sinn gekommen, dass du damit vielleicht mehr ausslössen könntest als nur die Auflösung zu verändern? Windows geht beim Ändern der Auflösung davon aus, dass das so bleibt und sortiert die Desktopsymbole neu. Selbst wenn du die Auflösung wieder zurücksetzt bleiben die Symbole so wie sie hingerückt wurden. :evil:

Wenn du allerdings hingegen temporär die Auflösung änderst, dann bleibt Windows friedlich und der Nutzer glücklich. Und es besteht die Chance, dass die Anwendung noch ein zweites Mal gestartet wird. Was durchaus in deinem Interesse sein sollte. :zwinker:

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.