博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用 ACPI\\ACPI0003设备 判断笔记本还是台式机
阅读量:6473 次
发布时间:2019-06-23

本文共 1822 字,大约阅读时间需要 6 分钟。

这个方式也是来自网上,来源忘记了,找到有一段时间了,这几天刚好用上,
按作者的思路是 笔记本 肯定会有 
硬件ID:           ACPI\ACPI0003
设备名称:         Microsoft AC Adapter
不管你是否安装电池,都不会影响到
比起 GetSystemPowerStatus 这个函数应该强一点点 下面看代码
 
 
1 #include "stdafx.h" 2 #include 
3 #include
4 #include
5 #include
6 #pragma comment(lib,"setupapi") 7 8 int _tmain(int argc, _TCHAR* argv[]) 9 {10 int ret = 0;11 12 HDEVINFO hDevInfo;13 SP_DEVINFO_DATA DeviceInfoData;14 DWORD i;15 16 hDevInfo = SetupDiGetClassDevs(NULL,17 0, 18 0,19 DIGCF_PRESENT | DIGCF_ALLCLASSES );20 21 if (hDevInfo == INVALID_HANDLE_VALUE)22 {23 printf("SetupDiGetClassDevs 失败\n");24 goto end;25 }26 27 TCHAR buffer[4096]={
0};28 DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);29 for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,30 &DeviceInfoData);i++)31 {32 DWORD DataT;33 DWORD buffersize = 4096;34 35 SetupDiGetDeviceRegistryProperty(36 hDevInfo,37 &DeviceInfoData,38 SPDRP_HARDWAREID,39 &DataT,40 (PBYTE)buffer,41 buffersize,42 &buffersize);43 44 if( wcscmp(buffer, L"ACPI\\ACPI0003")==0 )45 {46 SetupDiDestroyDeviceInfoList(hDevInfo);47 printf("找到笔记本电脑直流适配器的设备!\n");48 ret =1 ;49 goto end;50 }51 }52 53 54 if ( GetLastError()!=NO_ERROR &&55 GetLastError()!=ERROR_NO_MORE_ITEMS )56 {57 printf("GetLastError %d\n",GetLastError());58 goto end;59 }60 end:61 SetupDiDestroyDeviceInfoList(hDevInfo);62 ::system("pause");63 return ret ;64 }

 

 

 

 

转载于:https://www.cnblogs.com/qinsuixin/p/4ca4349682d80f47223e602837710414.html

你可能感兴趣的文章
个人博客
查看>>
IDEA 快捷键(Windows)
查看>>
关于双重锁单例模式
查看>>
小白的进阶之路之vue源码解读(0)
查看>>
《Miss Talk》第05期:对话唱唱启蒙英语技术总监 李超
查看>>
【Android架构】基于MVP模式的Retrofit2+RXjava封装之多Url(七)
查看>>
MockJS快速入门
查看>>
linux目录简介
查看>>
【我的技术我做主】坚持为未来
查看>>
mac终端命令
查看>>
LyncPlus能干什么
查看>>
nginx+keepalived简单实现双击热备-高可用HA
查看>>
我的友情链接
查看>>
关于code::block无法调试
查看>>
Vmware Tools安装过程(Linux 环境)
查看>>
IOS设置SSH登陆
查看>>
深入理解CSS中的层叠上下文和层叠顺序
查看>>
centos6.5 nfs-server 配置实例
查看>>
华为应该联手中兴才是出路
查看>>
我的友情链接
查看>>