Я использовал функцию WinAPI для создания OLE-файла в C #.Функция 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
1008 * Значение sourceFileFullPath =. "C: \ Users \ Administrator \ AppData \ Local \ Temp \ TmpTzStore1 \ pju3wswj.jmq \ 000008F6 \ CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx" 1010 * Длина имени файла (CalendarRepeddsfsfdsfsfat344Issue5sdfdfsfsfdsfdsfsdsdfdsfsfdfkffffdfdsfsf00kbCalendarRepeatIssue500kbCalendarRepeatIssue500kbCalendarRepeatIssue500kb.xlsx) составляет 140.длина имени файла для файла OLE.Так как я попробовал это для разных файлов приложений (doc, docx, txt, pdf ...).Результаты варьировались для разных файлов.
Я не знаю, какова точная длина имени файла, поддерживаемая этим API.Или это зависит от ОС?Я использую Windows Server 2008.
Спасибо Prakash