【问题标题】:Get screen resolutions in a C# class (no forms/wpf/aps.net/...)在 C# 类中获取屏幕分辨率(无 forms/wpf/aps.net/...)
【发布时间】:2013-04-28 21:23:06
【问题描述】:

我不太了解 .NET 框架 (4.5),所以这是一个我找不到答案的问题。

在不使用 Windows 窗体或任何其他图形环境(如 WPF、Silverlight、ASP.NET 等)时,如何获得主屏幕的屏幕分辨率? 我正在尝试在类库 (dll) 中获取分辨率并从那里传递它。

.NET 有这样的功能吗?

【问题讨论】:

  • 即使您没有 GUI 界面,也可以添加对 windows 窗体的引用。这是一个选择吗?
  • @SamPlusPlus:谢谢,但这不起作用,添加参考时出现错误。
  • @bizzehdee:我会试试presentationFramework,谢谢!
  • 如果您不使用任何真正关心屏幕大小的类库,那么您为什么要关心它呢?请避免陷入编写“这就是我的机器的样子”代码的陷阱。对于新程序员来说很常见,这是一种练习,控制台模式的应用程序很容易,但学习这些东西没有用。阅读 Petzold 以了解核心。

标签: c# .net screen-resolution


【解决方案1】:

虽然您不是在 Winforms 环境中工作,但您仍然可以添加对它的 DLL 的引用。添加对System.Windows.Forms.dll的引用表示可以使用:

SystemInformation.VirtualScreen.Width   
SystemInformation.VirtualScreen.Height

【讨论】:

  • +1:注意PrimaryMonitorSize 在这种情况下可能更合适(仅适用于多显示器配置)。
  • 嘿,谢谢...我之前尝试过添加参考,但不知何故它不起作用!我决定再试一次,现在它正在工作:/感谢您推动我再试一次!
【解决方案2】:

这就是你需要的。

为时已晚,但我认为它对另一个有用:) 答案是使用带有 SystemMetric 的 P/Invoke。

您无需添加对 System.Windows.Forms.dll 的引用即可获取主屏幕的大小。

http://pinvoke.net/default.aspx/Enums.SystemMetric

我不喜欢使用一种简单的方法导入一个大 dll XD

【讨论】:

  • 我不太确定,是否为一个函数导入 DLL 会比从应用程序中引用一次 DLL 更影响性能?我的意思是,引用一个已经是 .NET 框架的一部分的 DLL 并不会使您的应用程序比每次需要一个函数时都导入一个 DLL 更庞大。我错过了什么吗?
  • 其实.NET中使用P/invoke调用win 32 api函数的方法有很多。您应该访问 referencesource.microsoft.com 来查看。所以如果不想导入.net dll,可以直接调用win32 api。在这种情况下,您只需要创建一个或两个值的 SystemMetric 枚举来获取屏幕大小。然后调用 GetSystemMetrics 函数。
  • 与 .Net 库调用相比,P/invoke 调用总是会影响性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多