我正在尝试在Delphi 2007中编写一个小程序,以便在Windows 7计算机插入可移动USB驱动器时可以访问其中的文件。但是,该驱动器不会显示为标准驱动器字母。它出现在Windows资源管理器中的“便携式设备”下。我已经编写了以下代码来枚举“计算机”下的所有项目:
Procedure TfrmMain.ComputerChanged(Var Msg: TMessage);
Var
Enum: IEnumIDList;
Fetched: Longword;
Item: PItemIDList;
Path: String;
Computer: IShellFolder;
StrRet: TSTRRET;
Begin
Status('Computer changed... Checking folders.');
fDesktop.BindToObject(fCompPidl, Nil, IID_IShellFolder, Computer);
If Assigned(Computer) And
(Computer.EnumObjects(Self.Handle, SHCONTF_FOLDERS, Enum) = NOERROR) Then
Begin
While (Enum.Next(1, Item, Fetched) = NOERROR) Do
Begin
FillChar(StrRet, SizeOf(StrRet), #0);
Computer.GetDisplayNameOf(Item, SHGDN_FORADDRESSBAR or SHGDN_NORMAL, StrRet);
Path := StrRetToStr(StrRet, Item);
Status(Path);
End;
End;
End;
(注意:状态过程只是向TMemo输出消息。)
每当Windows shell子系统通知我的应用程序发生更改时,就会调用此过程。 它枚举所有本地驱动器和网络驱动器,但仅限于这些(iCloud照片驱动器也不包括在内)。
有人知道如何访问这些虚拟驱动器上的文件吗?