枚举电池设备c++窗口
Enumerating battery devices c++ windows
我使用windows api来获取各种硬件信息,如cpu使用情况和电池信息。我一直在按照本指南获取电池设备的名称http://msdn.microsoft.com/en-us/library/windows/desktop/bb204769%28v=vs.85%29.aspx但是我到了这里就被卡住了。
#define INITGUID
#include<windows.h>
#include<batclass.h>
#include<setupapi.h>
#include<devguid.h>
using namespace std;
int main()
{
HDEVINFO hdev = SetupDiGetClassDevs(&GUID_DEVCLASS_BATTERY, 0, 0, DIGCF_PRESENT
| DIGCF_DEVICEINTERFACE);
}
但是我得到以下错误
[Linker error] C:UsersOwnerAppDataLocalTempccTMeaf9.o:Untitled1.cpp:(.text+0x28): undefined reference to `__imp_SetupDiGetClassDevsA' collect2: ld returned 1 exit status
我是c++的初学者,所以我可能会错过一些显而易见的东西,但这就是他们在指南中的做法。任何建议都很好。
文档撒谎了,GUID实际上是在devguid.h中定义的。此外(如果你还没有在另一个源文件中这样做),你需要
#define INITGUID
在包含BatClass.h和devguid.h之前,如果您的项目中没有这样的错误,则在链接时会得到一个未定义的符号错误,如果您有多个错误,则会在链接时得到多个定义的符号。
它是在devguid.h
中我的mingw/GCC头文件和MSSDK的旧副本中定义的。
尝试添加以下内容:
#include <devguid.h>
以下代码在DevCPP上编译:
#define INITGUID
#include <windows.h>
#include<ddkbatclass.h>
#include<setupapi.h>
int main() {
{
HDEVINFO hdev = SetupDiGetClassDevs(&GUID_DEVICE_BATTERY, 0, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
}
注意GUID_DEVICE_BATTERY。
为了获得正确的链接,您必须在项目选项|参数|链接器中添加库libsetupapi.a
程序未测试为运行。它只能正确编译。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息