Autor Beitrag
Beme
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 15.05.03 13:15 
Hi Leute!
Hoffe ihr könnt mir helfen:
Wollte für jemand ein Programm machen, was ohne Prüfung + Rückmeldung die Bildschirmauflösung ändert.
Das Problem ist: bei mir (Win 98) gehts, bei demjenigen (mit WinXP) gehts nicht! :shock:
Aber das Programm hier aus dem FAQ (mit der Listbox) funktioniert auch bei ihm... Was hab ich falsch gemacht? Bzw. was fehlt damit es auch auf XP läuft?
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
unit Unit2;

interface

uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
 var  DevMode1    : TDeviceMode;
     liRetValue : Longint;
  begin
  devmode1.dmPelsWidth:=1024;
  devmode1.dmPelsHeight:=768;
  devmode1.dmBitsPerPel:=16;
  devmode1.dmDisplayFrequency:=85;
  devmode1.dmFields:=DM_BITSPERPEL+DM_PELSWIDTH+DM_PELSHEIGHT+dm_DisplayFrequency;
  liretvalue:=ChangeDisplaySettings (DevMode1, CDS_UPDATEREGISTRY);
  SendMessage(HWND_BROADCAST, WM_DISPLAYCHANGE, SPI_SETNONCLIENTMETRICS, 0);
  timer1.Enabled:=true;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
application.Terminate;

end;

end.
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: Do 15.05.03 13:37 
Hi

versuchs mal damit:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function NewRes(XRes, YRes, Depth, Freq: DWORD): Integer;
var
  DevMode: TDeviceMode;
begin
  EnumDisplaySettings(nil0, DevMode);
  DevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BitsPerPel or DM_DISPLAYFREQENCY;
  DevMode.dmPelsWidth := XRes;
  DevMode.dmPelsHeight := YRes;
  DevMode.dmBitsPerPel:= Depth;
  DevMode.dmDisplayFrequency:=Freq;
  Result := ChangeDisplaySettings(DevMode, CDS_UPDATEREGISTRY);
end;

Werte den Rückgabe wert aus! Nur wenn DISP_CHANGE_SUCCESSFUL zurückgegeben wird ist alles in Ordnung.
Für die:
DISP_CHANGE_RESTART The computer must be restarted in order for the graphics mode to work.
DISP_CHANGE_BADFLAGS An invalid set of flags was passed in.
DISP_CHANGE_FAILED The display driver failed the specified graphics mode.
DISP_CHANGE_BADMODE The graphics mode is not supported.
DISP_CHANGE_NOTUPDATED Windows NT only: Unable to write settings to the registry.
gib eine Entsprechende Meldung aus, bevor du das Programm benedest.

Und beende es nicht mit Terminate sondern mit Close.
Beme Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 19.05.03 08:00 
Danke, klappt wunderbar 8)