如何在VB.net中使用Windows Power Management API

时间:2015-09-02 18:38:41

标签: c++ vb.net windows winapi

我有一个我正在创建的程序,它集成了一个功能,可以告诉您当前的电源方案,并可以选择设置预配置的.pow文件。如果我在命令提示符下使用powercfg命令并且已经使用

将其集成到程序中,这很容易做到
Process.start"cmd", "/k powercfg... etc. etc." 

我宁愿能够使用Windows API来调用此设置,这样每次我想更新此设置时都不必运行命令窗口,这样我就可以保持输出目前的方案动态。

据我所知,VB.net没有以这种方式直接使用Windows API的能力。做一些研究我发现C ++可以。我想知道是否有办法创建一个DLL文件,我可以使用C ++调用我的VB.net脚本。或者,如果有一个更容易的解决方案,我很想知道。

2 个答案:

答案 0 :(得分:1)

您可以选择几种方式。我认为在VB.NET项目中使用WMI可能是最好的。您需要添加对System.Management和System.Management.Instrumentation命名空间的引用。有关使用代码的详细信息,请参阅MSDN上的此页:

https://msdn.microsoft.com/en-us/library/ms257340(v=vs.80).aspx

虽然以下是C#示例,但它应该为您提供有关如何在.NET中针对WMI编写查询的好主意,并且它也特定于您所考虑的目标。

Is there any API function to get the battery level in Windows Desktop Apps?

希望这有帮助。

答案 1 :(得分:1)

我得知这一切都要归功于约书亚。获得当前有效的计划...

 Try
        Dim searcher As New ManagementObjectSearcher(
                "root\CIMV2\power",
                "SELECT * FROM Win32_PowerPlan WHERE IsActive = 'True'")
        For Each queryObj As ManagementObject In searcher.Get()
            TextBox1.Text = queryObj("ElementName")
        Next