问题描述
- delphi 里面 IShellItem是如何使用的。
提示未定义IShellItem ,不知道是那个头文件未引用,
系统是Win7,
delphi7和delphixe2都试过,头文件引用了ShellAPI ComObj还是不行;
解决方案
应该是ShlObj;
给你段代码参考
uses ActiveX ComObj ShlObj;
function TForm1.CopyItem(const aSrcItem aDest aNewName: string): HRESULT;
const
CLSID_FileOp: TGUID = '{3ad05575-8857-4850-9277-11b85bdb8e09}';
var
lFileOperation: IFileOperation;
psiFrom: IShellItem;
psiTo: IShellItem;
begin
//
// Initialize COM as STA.
//
Result := CoInitializeEx(nil COINIT_APARTMENTTHREADED or COINIT_DISABLE_OLE1DDE);
if Succeeded(Result) then
begin
//// Create the IFileOperation interface//Result := CoCreateInstance(CLSID_FileOp nil CLSCTX_ALL IFileOperation lFileOperation);if Succeeded(Result) thenbegin // // Set the operation flags. Turn off all UI from being shown to the // user during the operation. This includes error confirmation // and progress dialogs. // Result := lFileOperation.SetOperationFlags(FOF_NO_UI); if Succeeded(Result) then begin // // Create an IShellItem from the supplied source path. // Result := SHCreateItemFromParsingName(aSrcItem nil IShellItem psiFrom); if Succeeded(Result) then begin if aDest <> '' then begin // // Create an IShellItem from the supplied // destination path. // Result := SHCreateItemFromParsingName(aDest nil IShellItem psiTo); end; if Succeeded(Result) then begin // // Add the operation // Result := lFileOperation.CopyItem(psiFrom psiTo aNewName nil); psiTo := nil; end; psiFrom := nil; end; if Succeeded(Result) then begin // // Perform the operation to copy the file. // Result := lFileOperation.PerformOperations; end; end; // // Release the IFileOperation interface. // lFileOperation := nil;end;CoUninitialize;
end;
end;
解决方案二:
C++是Shobjidl.h,Windows XP SP1以上
delphi的sdk可能比较旧。xe2不知道。
解决方案三:
不好意思,这段代码,我看到过,这个ShlObj里面也没有IShellItem的定义;
时间: 2024-09-24 18:53:58