| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 560 人关注过本帖
标题:delphi 复位U盘郁闷!!!
只看楼主 加入收藏
lin8812290
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2011-4-3
结帖率:66.67%
收藏
 问题点数:0 回复次数:2 
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;
搜索更多相关主题的帖子: 设备 function hidden Flash 
2011-08-03 19:30
lin8812290
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2011-4-3
收藏
得分:0 

但是改成这样编译又通不过,高手们指点下!
//枚举设备函数
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
            //获取设备的图标
                if(GetClassImageIndex(DeviceInfoData.ClassGuid, @iImage)) then
                begin
                    with TTreeView(hWndTree).Items.AddObject(nil, pszText, nil) do
                    begin
                        TTreeView(hWndTree).Items[i - 1].ImageIndex := iImage;
                        TTreeView(hWndTree).Items[i - 1].SelectedIndex := iImage;
                    end;
                    if(Problem = CM_PROB_DISABLED) then     //红色的(X)
                    begin
                        TTreeView(hWndTree).Items[i - 1].OverlayIndex := IDI_DISABLED_OVL - IDI_CLASSICON_OVERLAYFIRST;
                    end else
                    begin
                        if(Boolean(Problem)) then           //黄色的(!)
                        begin
                            TTreeView(hWndTree).Items[i - 1].OverlayIndex := IDI_PROBLEM_OVL - IDI_CLASSICON_OVERLAYFIRST;
                        end;
                    end;
                    if(Status and DN_NO_SHOW_IN_DM = DN_NO_SHOW_IN_DM) then   //灰色的没有连接
                    begin
                        TTreeView(hWndTree).Items[i - 1].Cut := true;
                    end;
                end;
            end;
        finally
            FreeMem(pszText);
        end;
    end;
    TTreeView(hWndTree).Items.EndUpdate;
    Result := true;
end;
2011-08-03 19:34
lin8812290
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2011-4-3
收藏
得分:0 
呃。。。忘记给分了!还能再给吗?
2011-08-03 19:34
快速回复:delphi 复位U盘郁闷!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023613 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved