delphi 复位U盘郁闷!!!
复位U盘.zip
(332.29 KB)
这是一个列举出所有设备的例子 show hidden device之后可以看到U盘可是怎么让它只显示U盘设备呢?还能Disable和Enable呢?
如果改成这样是能只显示U盘,但不能Disable和Enable ('STM SD Flash Disk USB Device'U盘是设备名)
function TForm1.EnumAddDevices(ShowHidden: Boolean; hwndTree: TTreeView; DevInfo: hDevInfo): Boolean;
var
i, Status, Problem: DWord;
pszText: PChar;
DeviceInfoData: TSPDevInfoData;
iImage: Integer;
begin
TTreeView(hWndTree).Items.BeginUpdate; //TreeView列表开始更新
DeviceInfoData.cbSize := SizeOf(TSPDevInfoData);
//TreeView清除所有的项
TTreeView(hWndTree).Items.Clear;
i := 0;
//枚举所有的设备
while SetupDiEnumDeviceInfo(DevInfo, i, DeviceInfoData) do
begin
inc(i);
//显示这个设备或把它放到下一个之上
if(CM_Get_DevNode_Status(@Status, @Problem, DeviceInfoData.DevInst, 0) <> CR_SUCCESS) then
begin
break;
end;
if(not (ShowHidden or not(Boolean(Status and DN_NO_SHOW_IN_DM)))) then
begin
break;
end;
GetMem(pszText, 256);
try
//获取详细的设备信息
ConstructDeviceName(DevInfo, DeviceInfoData, pszText, DWord(nil));
if pos('STM SD Flash Disk USB Device', StrPas(pszText)) <> 0 then //比较字符串,找到USB存储设备
begin
TTreeView(hWndTree).Items.AddObject(nil, pszText, nil);
end;
finally
FreeMem(pszText);
end;
end;
TTreeView(hWndTree).Items.EndUpdate;
Result := true;
end;