Bildschirmauflösung ohne Windows.Forms abfragen

27/05/2008 - 19:02 von Michael Justin | Report spam
Hallo zusammen

Für eine Fehlerprotokolldatei innerhalb von WPF Anwendungen benötige ich
eine Reihe von Systeminformationen, jedoch sind einige davon wie z.B.
Bildschirmauflösung anscheinend nur über Windows Forms erreichbar.

Es ist zwar möglich, die entsprechende Assembly dazu einzubinden,
sicherheitshalber suche ich aber nach Möglichkeiten, die ich eventuell
übersehen habe, mit denen dies auch mit .NET API Funktionen (.NET 3.5)
direkt möglich ist.

Viele Grüße
Michael Justin
SCJP, SCJA
betasoft - Software for Delphi™ and for the Java™ platform
http://www.mikejustin.com - http://www.betabeans.de
 

Lesen sie die antworten

#1 Kerem Gümrükcü
27/05/2008 - 19:40 | Warnen spam
Hallo Michael,

Es ist zwar möglich, die entsprechende Assembly dazu einzubinden,
sicherheitshalber suche ich aber nach Möglichkeiten, die ich eventuell
übersehen habe, mit denen dies auch mit .NET API Funktionen (.NET 3.5)
direkt möglich ist.



Hmm,...Du kannst die Assembly ruhing einbinden, dagegen
spricht nix, da es eh mit dem .NET installiert wird und
überall verfügbar ist,...

Aber Du kannst auch z.B. die Windows API nehmen, dann brauchst
Du keine Assembly. Da gibts ein paar ansàtze:

Erst das aufrufen:

[DllImport("coredll.dll")]
private static extern IntPtr GetDesktopWindow();

Dann den Rückgabewert an:

[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetWindowRect(HandleRef hWnd, out RECT lpRect);

übergeben.

Hier hast Du auch gleich die RECT:

[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}

Das wars. Du hast die Bildschirmauflösung,...!

Es geht auch mit GetSystemMetrics();

http://www.pinvoke.net/default.aspx...etric.html

[DllImport("user32.dll")]
static extern int GetSystemMetrics(SystemMetricsType mIndex);


public enum SystemMetricsType
{
SM_CXSCREEN = 0,
SM_CYSCREEN = 1,
SM_CYCAPTION = 4,
SM_CXBORDER = 5,
SM_CYBORDER = 6,
SM_CXFIXEDFRAME = 7,
SM_CYFIXEDFRAME = 8,
SM_CXSIZE = 30,
SM_CYSIZE = 31,
SM_CXFRAME = 32,
SM_CYFRAME = 33,
SM_CXEDGE = 45,
SM_CYEDGE = 46,
SM_CXSMICON = 49,
SM_CYSMICON = 50,
SM_CXSMSIZE = 52,
SM_CYSMSIZE = 53
}


Nun solltest Du ein glücklicher Mann sein...:-D

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de

Ähnliche fragen