- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Windows shell 枚举控制面板中的项目并在 memo 中添加项目名称,最终发布 IShellFolder
和 PITEMIDLIST
但出现错误。
代码:
procedure TForm1.Button1Click(Sender: TObject);
var
psfDeskTop : IShellFolder;
psfControl : IShellFolder;
pidControl : PITEMIDLIST;
pidChild : PITEMIDLIST;
pidAbsolute : PItemIdList;
pEnumList : IEnumIDList;
celtFetched : ULONG;
FileInfo : SHFILEINFOW;
begin
OleCheck(SHGetDesktopFolder(psfDeskTop));
OleCheck(SHGetSpecialFolderLocation(0, CSIDL_CONTROLS, pidControl));
OleCheck(psfDeskTop.BindToObject(pidControl, nil, IID_IShellFolder,
psfControl));
OleCheck(psfControl.EnumObjects(0, SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN
or SHCONTF_FOLDERS, pEnumList));
while pEnumList.Next(1, pidChild, celtFetched) = 0 do
begin
pidAbsolute := ILCombine(pidControl, pidChild);
SHGetFileInfo(LPCTSTR(pidAbsolute), 0, FileInfo, SizeOf(FileInfo),
SHGFI_PIDL or SHGFI_DISPLAYNAME);
Memo1.Lines.Add(FileInfo.szDisplayName);
end;
//OK
psfDeskTop._Release;
//Error
psfControl._Release;
//Error
//pEnumList._Release;
CoTaskMemFree(pidControl);
CoTaskMemFree(pidChild);
CoTaskMemFree(pidAbsolute);
end;
为什么释放psfDeskTop
没问题,但释放psfControl和pEnumList
却出错?还有其他方法可以释放它们吗?或者在释放它们之前我需要一些判断吗?
最佳答案
接口(interface)对象由内部引用计数器释放,不需要释放它们(You Should not release them)。
关于delphi - 为什么调用 IShellFolder._Release 时会出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13382397/
我使用 Windows shell 枚举控制面板中的项目并在 memo 中添加项目名称,最终发布 IShellFolder 和 PITEMIDLIST 但出现错误。 代码: procedure TFo
在 Delphi 中使用接口(interface)并覆盖引用计数时,可以绕过 Delphi 在接口(interface)达到引用计数为零时进行的_Release 调用。 但是 - 当混合类和接口(in
我真的很困惑。 // initial class type TTestClass = class( TInterfacedObject) end; {...}
(德尔福 XE2 更新 4) 我正在尝试获取一个继承的大型 Microsoft Word OLE 自动化单元(基于早期绑定(bind) TWordApplication 和来自 WordXP/Word
我是一名优秀的程序员,十分优秀!