我使用WinAPI函数在C#中创建OLE文件。 WinAPI函数是:
[DllImport("ole32.dll")]
public static extern int OleCreateFromFile(
[In] ref Guid rclsid,
[MarshalAs(UnmanagedType.LPWStr)] string lpszFileName,
[In] ref Guid riid, uint renderopt,
[In] IntPtr pFormatEtc,
IOleClientSite pClientSite,
IStorage pStg,
[MarshalAs(UnmanagedType.IUnknown)] out object ppvObj);
我在C#应用程序中使用了这个函数,如下所示:
hResult = OleAPI.OleCreateFromFile(ref clsid,
sourceFileFullPath,
ref IID_IOleObject,
(uint)OLERENDER.OLERENDER_DRAW,
IntPtr.Zero,
pOleClientSite,
pStorage,
out pOleObjectOut);
该功能完美无缺。 但是当文件的文件名长度为140时,无法创建OLE文件。 hResult的返回值是-2147467259。
的价值 sourceFileFullPath = “C:\用户\管理员\应用程序数据\本地\ TEMP \ TmpTzStore1 \ pju3wswj.jmq \ 000008F6 \ CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx”
文件名长度(CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx)为140。
但是当我将文件名修剪为120时,它确实有效。
我想知道OLE文件的文件名长度是否有任何限制。 因为我尝试了不同的应用程序文件(doc,docx,txt,pdf ...)。结果因不同文件而异。
我不知道此API支持的文件名长度是多少。或者它取决于操作系统?我正在使用Windows Server 2008。
由于 普拉卡什