C# 暂停个人电脑

C# 暂停个人电脑,c#,uwp,suspend,C#,Uwp,Suspend,我是C#的新手,我正在尝试编写自己的UWP应用程序,以便在用户输入interval后暂停PC 我已经设法让我的计时器工作,但我正在努力理解如何调用该方法来挂起计算机。我尝试使用建议的代码 但我在尝试构建项目时遇到以下错误: CS0117“应用程序”不包含“SetSuspendState”系统计时器C:\Users\xxxxx\Source\Workspace\Workspace\SystemTimer\SystemTimer\MainPage.xaml.cs 52的定义 我找到一个MSDN条目,

我是C#的新手,我正在尝试编写自己的UWP应用程序,以便在用户输入interval后暂停PC

我已经设法让我的计时器工作,但我正在努力理解如何调用该方法来挂起计算机。我尝试使用建议的代码

但我在尝试构建项目时遇到以下错误:

CS0117“应用程序”不包含“SetSuspendState”系统计时器C:\Users\xxxxx\Source\Workspace\Workspace\SystemTimer\SystemTimer\MainPage.xaml.cs 52的定义

我找到一个MSDN条目,建议我使用
System.Windows.Form
库。我尝试将其添加到名称空间中,但得到一个错误,即
Form
System.Windows
中不是可用的名称空间


我觉得我可能遗漏了一些基本的东西,但我不能完全确定它是什么。

您是否尝试过使用互操作服务来实现这一点

[DllImport("Powrprof.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern bool SetSuspendState(bool hiberate, bool forceCritical, bool disableWakeEvent);

// Hibernate
SetSuspendState(true, true, true);
// Standby
SetSuspendState(false, true, true);
我觉得我可能错过了一些基本的东西,但我并不完全是这样

(UWP)应用程序的世界是一个不同的世界。应用程序不应该干扰其底层系统。您基本上是在沙盒环境中运行的,并且只获得API提供的内容。关闭或挂起系统不是此API的一部分


你有什么选择?如果你创建一个桌面应用程序,你可能会过得更好。然后,您将能够使用所有可用的桌面API,包括
System.Windows.Form

您所针对的.NET framework版本?查看,它将告诉您需要引用哪个程序集,以及找到所需类的名称空间。在这种情况下,您需要对
System.Windows.Forms.dll
的引用,并且需要名称空间(使用
语句添加
System.Windows.Forms
可能与@ChrisF 4.5或4.6重复,这只是一个学习练习,不会超出我自己的范围PC@series0neOP在问题中链接了这个问题,说它不起作用,所以我怀疑它是一个重复。这不会起作用,因为你不能调用pinvoke任意的Win32函数。只有有限的一组可用,请参见。为什么会这样?您是否会使用
DllImport
您的应用程序将不再是“通用”的,而是与特定平台紧密相连。我认为这可能是我在尝试熟悉环境时的最佳选择。非常感谢。
[DllImport("Powrprof.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern bool SetSuspendState(bool hiberate, bool forceCritical, bool disableWakeEvent);

// Hibernate
SetSuspendState(true, true, true);
// Standby
SetSuspendState(false, true, true);