DPI-Einstellung auslesen
Moderator: Moderatoren
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
DPI-Einstellung auslesen
Hallo,
da immer öfters bei hohen Monitorauslösungen die Schriftgradeinstellungen auf 125% (=120dpi) oder sogar auf 150% gesetzt werden suche ich eine Möglichkeit die DPI-Einstellung auszulesen um entsprechende Anpassungen in meinem Programm vorzunehmen.
Ich habe hier im Forumm was älteres gefunden, das scheint allerdings nur mit XP zu funktionieren.
da immer öfters bei hohen Monitorauslösungen die Schriftgradeinstellungen auf 125% (=120dpi) oder sogar auf 150% gesetzt werden suche ich eine Möglichkeit die DPI-Einstellung auszulesen um entsprechende Anpassungen in meinem Programm vorzunehmen.
Ich habe hier im Forumm was älteres gefunden, das scheint allerdings nur mit XP zu funktionieren.
Zuletzt geändert von peternmb am Fr, 01. Mär 2013 17:22, insgesamt 2-mal geändert.
- Jan
- Marvin
- Beiträge: 14653
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: DPI-Einstellung auslesen
Ich mach das so:
Jan
Code: Alles auswählen
***********************************************************************************************************************************
*** Feststellen, welche Auflösung der Rechner hat
***********************************************************************************************************************************
FUNCTION AppDesktopDPI
LOCAL nHWnd := AppDesktop():GetHWnd()
LOCAL nHDC := DllCall("User32.DLL", DLL_STDCALL, "GetDC", nHWnd)
LOCAL nLogPix := 96
LOCAL LOGPIXELSY := 88
IF nHDC > 0
nLogPix := DllCall("GDI32.DLL", DLL_STDCALL, "GetDeviceCaps", nHDC, LOGPIXELSY)
DllCall("User32.DLL", DLL_STDCALL, "ReleaseDC", nHWnd, nHDC)
ENDIF
RETURN nLogPix
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: DPI-Einstellung auslesen [erledigt]
Das funktioniert bei mir leider recht unzuverlässig.
Bei ca. jedem 2.Programmstart erhalte ich nHDC=0, was doch eigentlich nicht sein sollte
Ich habe unter XP und Win7/32 getestet, mit 96 und mit 120 dpi.
Ich habe es jetzt so gemacht, aber das ist eigentlich nicht Sinn der Sache:
Bei ca. jedem 2.Programmstart erhalte ich nHDC=0, was doch eigentlich nicht sein sollte
Ich habe unter XP und Win7/32 getestet, mit 96 und mit 120 dpi.
Ich habe es jetzt so gemacht, aber das ist eigentlich nicht Sinn der Sache:
Code: Alles auswählen
***************************************************************************************************************
*** Feststellen, welche Auflösung der Rechner hat
***************************************************************************************************************
FUNCTION AppDesktopDPI
//
LOCAL nHWnd := AppDesktop():GetHWnd()
LOCAL nHDC := DllCall("User32.DLL", DLL_STDCALL, "GetDC", nHWnd)
LOCAL nLogPix := 96
LOCAL LOGPIXELSY := 88
//
IF nHDC > 0
nLogPix := DllCall("GDI32.DLL", DLL_STDCALL, "GetDeviceCaps", nHDC, LOGPIXELSY)
DllCall("User32.DLL", DLL_STDCALL, "ReleaseDC", nHWnd, nHDC)
ELSE
msgbox("Die DPi-Einstellungen konnten nicht ausgegelesen werden! "+chr(13)+ ;
"Darstellung der Schriftarten ist vermutlich nicht korrekt. "+chr(13)+ ;
"Ein Neustart des Programmes könnte das Problem beheben.","Problem")
ENDIF
//
RETURN nLogPix
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: DPI-Einstellung auslesen [erledigt]
hm ...peternmb hat geschrieben:Das funktioniert bei mir leider recht unzuverlässig.
Bei ca. jedem 2.Programmstart erhalte ich nHDC=0, was doch eigentlich nicht sein sollte
Ich habe unter XP und Win7/32 getestet, mit 96 und mit 120 dpi.
Code: Alles auswählen
PROCEDURE APPSYS ; RETURN
PROCEDURE MAIN
LOCAL i
FOR i = 1 TO 60
AppDesktopDPI()
SLEEP(100)
NEXT
RETURN
gruss by OHR
Jimmy
Jimmy
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: DPI-Einstellung auslesen
auch unter Win8 muss ich das Programm manchmal mehrmals starten bevor der dpi-Wert richtig ausgelesen werden kann.
Könnte das evtl. an meiner GK liegen? Alle Systeme befinden sich auf dem gleichen Rechner.
Könnte das evtl. an meiner GK liegen? Alle Systeme befinden sich auf dem gleichen Rechner.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: DPI-Einstellung auslesen
Betriebssysteminstallation nicht ganz konsistent? Lass doch mal im Kommandozeilenfenster (mit Adminrechten starten!)
SFC /SCANNOW
laufen.
SFC /SCANNOW
laufen.
Herzlich,
Tom
Tom
-
- 1000 working lines a day
- Beiträge: 525
- Registriert: Mi, 01. Feb 2006 16:22
- Wohnort: 06618 Naumburg
Re: DPI-Einstellung auslesen
Kann eigentlich nicht zutreffen, da ich das Problem unter XP, WIn7 und Win8 habe,Tom hat geschrieben:Betriebssysteminstallation nicht ganz konsistent? Lass doch mal im Kommandozeilenfenster (mit Adminrechten starten!)
SFC /SCANNOW
laufen.
allerdings alles auf dem gleichen Rechner mit Multiboot-System.