`
- 浏览:
1106305 次
-
- #include<WINDOWS.H>
-
#include<TCHAR.H>
-
#include<SETUPAPI.H>
-
-
#pragmacomment(lib,"setupapi.lib")
-
- HDEVINFOhDevInfo=NULL;
-
-
voidFormatMSG(DWORDdwError,LPTSTR*o)
- {
-
LPTSTRoo=(LPTSTR)o;
-
BOOLbOk=FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER,NULL,dwError,
- MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),oo,0,NULL);
-
if(!bOk)
-
{
-
HMODULEhDll=LoadLibraryEx(_T("netmsg.dll"),NULL,DONT_RESOLVE_DLL_REFERENCES);
-
if(NULL!=hDll)
- {
- FormatMessage(FORMAT_MESSAGE_FROM_HMODULE|
- FORMAT_MESSAGE_FROM_SYSTEM,hDll,
- dwError,
- MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),
-
(LPTSTR)o,0,NULL);
- FreeLibrary(hDll);
- }
- }
- }
-
BOOLChangeStatus(DWORDNewStatus,DWORDSelectedItem,HDEVINFOhDevInfo)
- {
-
LPTSTRlpszMsg=NULL;
-
HCURSORhCursor=NULL;
-
try
- {
-
SP_PROPCHANGE_PARAMSPropChangeParams={sizeof(SP_CLASSINSTALL_HEADER)};
-
SP_DEVINFO_DATADeviceInfoData={sizeof(SP_DEVINFO_DATA)};
- hCursor=SetCursor(LoadCursor(NULL,IDC_WAIT));
-
-
if(!SetupDiEnumDeviceInfo(hDevInfo,SelectedItem,&DeviceInfoData))
- {
- FormatMSG(GetLastError(),&lpszMsg);
-
throwlpszMsg;
- }
-
- PropChangeParams.ClassInstallHeader.InstallFunction=DIF_PROPERTYCHANGE;
- PropChangeParams.Scope=DICS_FLAG_GLOBAL;
- PropChangeParams.StateChange=NewStatus;
-
if(!SetupDiSetClassInstallParams(hDevInfo,&DeviceInfoData,(SP_CLASSINSTALL_HEADER*)&PropChangeParams,
-
sizeof(PropChangeParams)))
- {
- FormatMSG(GetLastError(),&lpszMsg);
-
throwlpszMsg;
- }
-
-
if(!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,hDevInfo,&DeviceInfoData))
- {
- FormatMSG(GetLastError(),&lpszMsg);
-
throwlpszMsg;
- }
- SetCursor(hCursor);
-
returnTRUE;
- }
-
catch(TCHAR*pszError)
- {
- SetCursor(hCursor);
-
::MessageBox(NULL,pszError,_T("提示"),MB_OK);
-
if(NULL!=lpszMsg)
- {
-
LocalFree((HLOCAL)lpszMsg);
- }
-
returnFALSE;
- }
- }
-
-
-
-
-
-
-
-
-
BOOLControlDisk(intnStatus,intnIndex)
- {
-
if(-1==nStatus)
- {
-
returnFALSE;
- }
-
LPTSTRlpszMsg=NULL;
-
try
- {
-
TCHAR*GUIDString=NULL;
- GUIDguid;
-
ZeroMemory(&guid,sizeof(GUID));
-
switch(nIndex)
- {
-
case0:
-
GUIDString=_T("4D36E980-E325-11CE-BFC1-08002BE10318");
-
UuidFromString((unsignedchar*)GUIDString,&guid);
-
break;
-
case1:
-
GUIDString=_T("4D36E965-E325-11CE-BFC1-08002BE10318");
-
UuidFromString((unsignedchar*)GUIDString,&guid);
-
break;
-
case2:
-
GUIDString=_T("36FC9E60-C465-11CF-8056-444553540000");
-
UuidFromString((unsignedchar*)GUIDString,&guid);
-
break;
- }
- hDevInfo=SetupDiGetClassDevs(&guid,NULL,NULL,DIGCF_PRESENT);
-
if(INVALID_HANDLE_VALUE!=hDevInfo)
-
{lpszMsg="hahazx";
- FormatMSG(GetLastError(),&lpszMsg);
-
throwlpszMsg;
- }
-
DWORDi;
- SP_DEVINFO_DATADeviceInfoData;
-
ZeroMemory(&DeviceInfoData,sizeof(SP_DEVINFO_DATA));
-
DeviceInfoData.cbSize=sizeof(SP_DEVINFO_DATA);
-
for(i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);++i)
- {
-
if(1==nStatus)
-
{::MessageBox(NULL,"启用","correct",MB_OK);
- ChangeStatus(DICS_ENABLE,i,hDevInfo);
- }
-
elseif(0==nStatus)
-
{::MessageBox(NULL,"禁用","error",MB_OK);
- ChangeStatus(DICS_DISABLE,i,hDevInfo);
- }
- }
-
-
returnSetupDiDestroyDeviceInfoList(hDevInfo);
- }
-
catch(TCHAR*pszError)
- {
-
::MessageBox(NULL,pszError,_T("提示"),MB_OK);
-
if(NULL!=lpszMsg)
- {
-
LocalFree((HLOCAL)lpszMsg);
- }
-
returnFALSE;
- }
-
returnFALSE;
- }
-
voidmain()
- {
- ControlDisk(1,2);
- }
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
//vc++实现控制USB设备启用与否,希望对你有用
一个启用和禁用设备的例子,该代码展示了禁用和启用USB设备的功能。如果需要禁用软驱和光驱,需要修改相应的参数。-Enable and disable a device example, the code to display the disable and enable USB devices....
VC实现光驱、软驱、USB的禁用和启用.doc
VC实现禁用与启用设备,范例禁用与启用网卡
USB存储设备启用禁用工具绿色版 一键完成启用以及禁用
这是C++写的控制USB键盘和鼠标启用或者停用的DLL,只要加装进工程后就可以直接调用,文件里面有具体的使用说明。
用VC++对菜单栏进行编程,实现某个菜单项的禁用和启用功能,编译通过
C# 禁/启用USB接口源码 可在此基础上加入加密狗或安全令牌验证机制
通过本程序可以方便的启动或者禁止使用电脑的U盘或者USB存储设备,应用后无需重启电脑。 http://hi.baidu.com/yanzi52351
VC实现光驱、软驱、USB的禁用和启用.由于工作的实际需要,需要对光驱,软驱,USB的启用和禁用实现控制。参考大家提供的对网卡禁用的代码,实现了光驱,软驱,USB的启用和禁用。
易语言源码易语言USB设备控制源码.rar
VC++启用禁用屏幕保护程序例子
C#修改注册表来达到禁用启用USB设备,适合初学者的例子
USB设备的禁用启用的批处理,可以很好的控制USB存储。
采用SetupDi函数集,实现USB设备的动态卸载、动态加载、枚举信息。
USB端口控制工具【强烈推荐】 可禁用本机U盘和移动硬盘等存储设备 同时不影响USB键盘鼠标的使用 网络机房、网吧等其它需要禁用U盘并使用USB鼠标的好东东。
将USB端口禁用,启用,简单方便。简单实用的小程序,直接点击运行就可以了。
电脑怎样写一个bat启用USB接口
通过修改相关的注册表项值来控制USB移动存储设备的禁用、启用以及读写。
指纹识别是我们提供的一项比较方便的功能,当你需要阻止别的用户的USB存储设备的使用,而你自己的可以正常使用,不要不停的来回设置启用过滤与否。你要做的仅仅是,插入你的USB存储设备,在“高级设置”选项点击...