-
Notifications
You must be signed in to change notification settings - Fork 988
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cleanup GetSystemMetrics
- Loading branch information
Showing
8 changed files
with
314 additions
and
391 deletions.
There are no files selected for viewing
120 changes: 120 additions & 0 deletions
120
src/Common/src/Interop/User32/Interop.GetSystemMetrics.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// The .NET Foundation licenses this file to you under the MIT license. | ||
// See the LICENSE file in the project root for more information. | ||
|
||
using System; | ||
using System.Diagnostics; | ||
using System.Runtime.InteropServices; | ||
using System.Windows.Forms; | ||
|
||
internal static partial class Interop | ||
{ | ||
internal static partial class User32 | ||
{ | ||
public enum SystemMetric | ||
{ | ||
SM_CXSCREEN = 0, | ||
SM_CYSCREEN = 1, | ||
SM_CXVSCROLL = 2, | ||
SM_CYHSCROLL = 3, | ||
SM_CYCAPTION = 4, | ||
SM_CXBORDER = 5, | ||
SM_CYBORDER = 6, | ||
SM_CXFIXEDFRAME = 7, | ||
SM_CYFIXEDFRAME = 8, | ||
SM_CYVTHUMB = 9, | ||
SM_CXHTHUMB = 10, | ||
SM_CXICON = 11, | ||
SM_CYICON = 12, | ||
SM_CXCURSOR = 13, | ||
SM_CYCURSOR = 14, | ||
SM_CYMENU = 15, | ||
SM_CYKANJIWINDOW = 18, | ||
SM_MOUSEPRESENT = 19, | ||
SM_CYVSCROLL = 20, | ||
SM_CXHSCROLL = 21, | ||
SM_DEBUG = 22, | ||
SM_SWAPBUTTON = 23, | ||
SM_CXMIN = 28, | ||
SM_CYMIN = 29, | ||
SM_CXSIZE = 30, | ||
SM_CYSIZE = 31, | ||
SM_CXFRAME = 32, | ||
SM_CYFRAME = 33, | ||
SM_CXMINTRACK = 34, | ||
SM_CYMINTRACK = 35, | ||
SM_CXDOUBLECLK = 36, | ||
SM_CYDOUBLECLK = 37, | ||
SM_CXICONSPACING = 38, | ||
SM_CYICONSPACING = 39, | ||
SM_MENUDROPALIGNMENT = 40, | ||
SM_PENWINDOWS = 41, | ||
SM_DBCSENABLED = 42, | ||
SM_CMOUSEBUTTONS = 43, | ||
SM_SECURE = 44, | ||
SM_CXEDGE = 45, | ||
SM_CYEDGE = 46, | ||
SM_CXMINSPACING = 47, | ||
SM_CYMINSPACING = 48, | ||
SM_CXSMICON = 49, | ||
SM_CYSMICON = 50, | ||
SM_CYSMCAPTION = 51, | ||
SM_CXSMSIZE = 52, | ||
SM_CYSMSIZE = 53, | ||
SM_CXMENUSIZE = 54, | ||
SM_CYMENUSIZE = 55, | ||
SM_ARRANGE = 56, | ||
SM_CXMINIMIZED = 57, | ||
SM_CYMINIMIZED = 58, | ||
SM_CXMAXTRACK = 59, | ||
SM_CYMAXTRACK = 60, | ||
SM_CXMAXIMIZED = 61, | ||
SM_CYMAXIMIZED = 62, | ||
SM_NETWORK = 63, | ||
SM_CLEANBOOT = 67, | ||
SM_CXDRAG = 68, | ||
SM_CYDRAG = 69, | ||
SM_SHOWSOUNDS = 70, | ||
SM_CXMENUCHECK = 71, | ||
SM_CYMENUCHECK = 72, | ||
SM_MIDEASTENABLED = 74, | ||
SM_MOUSEWHEELPRESENT = 75, | ||
SM_XVIRTUALSCREEN = 76, | ||
SM_YVIRTUALSCREEN = 77, | ||
SM_CXVIRTUALSCREEN = 78, | ||
SM_CYVIRTUALSCREEN = 79, | ||
SM_CMONITORS = 80, | ||
SM_SAMEDISPLAYFORMAT = 81, | ||
SM_CYFOCUSBORDER = 84, | ||
SM_CXFOCUSBORDER = 83, | ||
SM_REMOTESESSION = 0x1000, | ||
SM_CXSIZEFRAME = SM_CXFRAME, | ||
SM_CYSIZEFRAME = SM_CYFRAME | ||
} | ||
|
||
[DllImport(Libraries.User32, ExactSpelling = true)] | ||
public static extern int GetSystemMetrics(SystemMetric nIndex); | ||
|
||
[DllImport(Libraries.User32, ExactSpelling = true)] | ||
private static extern int GetSystemMetricsForDpi(SystemMetric nIndex, uint dpi); | ||
|
||
/// <summary> | ||
/// Tries to get system metrics for the dpi. dpi is ignored if "GetSystemMetricsForDpi" is not available on the OS that this application is running. | ||
/// </summary> | ||
/// <param name="nIndex">index</param> | ||
/// <param name="dpi">dpi requested</param> | ||
/// <returns>returns system metrics for dpi</returns> | ||
public static int GetCurrentSystemMetrics(SystemMetric nIndex, uint dpi) | ||
{ | ||
if (OsVersion.IsWindows10_1607OrGreater) | ||
{ | ||
return GetSystemMetricsForDpi(nIndex, dpi); | ||
} | ||
else | ||
{ | ||
Debug.Fail("GetSystemMetricsForDpi() is not available on this OS"); | ||
return GetSystemMetrics(nIndex); | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.