wfxplugin.pas 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. unit WfxPlugin; { Plugin definitions version 2.0 }
  2. interface
  3. uses
  4. SysUtils {$IFDEF MSWINDOWS}, Windows{$ENDIF};
  5. { ids for FsGetFile }
  6. const FS_FILE_OK=0;
  7. FS_FILE_EXISTS=1;
  8. FS_FILE_NOTFOUND=2;
  9. FS_FILE_READERROR=3;
  10. FS_FILE_WRITEERROR=4;
  11. FS_FILE_USERABORT=5;
  12. FS_FILE_NOTSUPPORTED=6;
  13. FS_FILE_EXISTSRESUMEALLOWED=7;
  14. FS_EXEC_OK=0;
  15. FS_EXEC_ERROR=1;
  16. FS_EXEC_YOURSELF=-1;
  17. FS_EXEC_SYMLINK=-2;
  18. FS_COPYFLAGS_OVERWRITE=1;
  19. FS_COPYFLAGS_RESUME=2;
  20. FS_COPYFLAGS_MOVE=4;
  21. FS_COPYFLAGS_EXISTS_SAMECASE=8;
  22. FS_COPYFLAGS_EXISTS_DIFFERENTCASE=16;
  23. { flags for tRequestProc }
  24. const
  25. RT_Other=0;
  26. RT_UserName=1;
  27. RT_Password=2;
  28. RT_Account=3;
  29. RT_UserNameFirewall=4;
  30. RT_PasswordFirewall=5;
  31. RT_TargetDir=6;
  32. RT_URL=7;
  33. RT_MsgOK=8;
  34. RT_MsgYesNo=9;
  35. RT_MsgOKCancel=10;
  36. { flags for tLogProc }
  37. const msgtype_connect=1;
  38. msgtype_disconnect=2;
  39. msgtype_details=3;
  40. msgtype_transfercomplete=4;
  41. msgtype_connectcomplete=5;
  42. msgtype_importanterror=6;
  43. msgtype_operationcomplete=7;
  44. { flags for FsStatusInfo }
  45. const FS_STATUS_START=0;
  46. FS_STATUS_END=1;
  47. FS_STATUS_OP_LIST=1;
  48. FS_STATUS_OP_GET_SINGLE=2;
  49. FS_STATUS_OP_GET_MULTI=3;
  50. FS_STATUS_OP_PUT_SINGLE=4;
  51. FS_STATUS_OP_PUT_MULTI=5;
  52. FS_STATUS_OP_RENMOV_SINGLE=6;
  53. FS_STATUS_OP_RENMOV_MULTI=7;
  54. FS_STATUS_OP_DELETE=8;
  55. FS_STATUS_OP_ATTRIB=9;
  56. FS_STATUS_OP_MKDIR=10;
  57. FS_STATUS_OP_EXEC=11;
  58. FS_STATUS_OP_CALCSIZE=12;
  59. FS_STATUS_OP_SEARCH=13;
  60. FS_STATUS_OP_SEARCH_TEXT=14;
  61. FS_STATUS_OP_SYNC_SEARCH=15;
  62. FS_STATUS_OP_SYNC_GET=16;
  63. FS_STATUS_OP_SYNC_PUT=17;
  64. FS_STATUS_OP_SYNC_DELETE=18;
  65. FS_STATUS_OP_GET_MULTI_THREAD=19;
  66. FS_STATUS_OP_PUT_MULTI_THREAD=20;
  67. {Flags for FsExtractCustomIcon}
  68. const FS_ICONFLAG_SMALL=1;
  69. FS_ICONFLAG_BACKGROUND=2;
  70. FS_ICON_USEDEFAULT=0;
  71. FS_ICON_EXTRACTED=1;
  72. FS_ICON_EXTRACTED_DESTROY=2;
  73. FS_ICON_DELAYED=3;
  74. const FS_BITMAP_NONE=0;
  75. FS_BITMAP_EXTRACTED=1;
  76. FS_BITMAP_EXTRACT_YOURSELF=2;
  77. FS_BITMAP_EXTRACT_YOURSELF_ANDDELETE=3;
  78. FS_BITMAP_CACHE=256;
  79. {Flags for crypto callback function}
  80. FS_CRYPT_SAVE_PASSWORD=1;
  81. FS_CRYPT_LOAD_PASSWORD=2;
  82. FS_CRYPT_LOAD_PASSWORD_NO_UI=3; {Load password only if master password has already been entered!}
  83. FS_CRYPT_COPY_PASSWORD=4;
  84. FS_CRYPT_MOVE_PASSWORD=5;
  85. FS_CRYPT_DELETE_PASSWORD=6;
  86. FS_CRYPTOPT_MASTERPASS_SET=1; {The user already has a master password defined}
  87. {Flags for FsGetBackgroundFlags}
  88. BG_DOWNLOAD=1; { Plugin supports downloads in background }
  89. BG_UPLOAD=2; { Plugin supports uploads in background }
  90. BG_ASK_USER=4; { Plugin requires separate connection for background transfers -> ask user first }
  91. type
  92. { Unsigned integer with pointer size }
  93. THandle = {$IFDEF CPU64}QWord{$ELSE}LongWord{$ENDIF};
  94. const
  95. wfxInvalidHandle: THandle = THandle(-1);
  96. { Some Windows specific stuff }
  97. const
  98. MAXDWORD = DWORD($FFFFFFFF);
  99. FILE_ATTRIBUTE_NORMAL = 128;
  100. FILE_ATTRIBUTE_DIRECTORY = 16;
  101. FILE_ATTRIBUTE_REPARSE_POINT = $0400;
  102. FILE_ATTRIBUTE_UNIX_MODE = $80000000;
  103. type
  104. TInt64Rec = packed record
  105. case Boolean of
  106. True : (Value : Int64);
  107. False : (Low, High : DWORD);
  108. end;
  109. BOOL = LongBool;
  110. HBITMAP = THandle;
  111. HICON = THandle;
  112. HWND = THandle;
  113. const
  114. FS_ICON_FORMAT_HICON = 0; // Load icon from HICON (Windows only)
  115. FS_ICON_FORMAT_FILE = 1; // Load icon from file name returned by plugin in the RemoteName
  116. FS_ICON_FORMAT_BINARY = 2; // Load icon from Data byte array (PNG or ICO), destroy data using Free if FS_ICON_EXTRACTED_DESTROY returned
  117. type
  118. PWfxIcon = ^TWfxIcon;
  119. TWfxIcon = packed record
  120. Data: Pointer; // Icon data
  121. Size: UIntPtr; // Input: suggested icon size (width/height), output: size of Data byte array
  122. Format: UIntPtr; // See FS_ICON_FORMAT_*
  123. Free: procedure(Data: Pointer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; // Procedure used to destroy Data byte array
  124. end;
  125. type
  126. {$IFDEF MSWINDOWS}
  127. FILETIME = Windows.FILETIME;
  128. {$ELSE}
  129. FILETIME = packed record
  130. dwLowDateTime : DWORD;
  131. dwHighDateTime : DWORD;
  132. end;
  133. {$ENDIF}
  134. TFileTime = FILETIME; // for compatibility with all plugins
  135. PFileTime = ^FILETIME;
  136. TWfxFileTime = FILETIME;
  137. PWfxFileTime = ^FILETIME;
  138. {$IFDEF MSWINDOWS}
  139. WIN32_FIND_DATAA = Windows.WIN32_FIND_DATA;
  140. {$ELSE}
  141. WIN32_FIND_DATAA = packed record
  142. dwFileAttributes : DWORD;
  143. ftCreationTime : TFILETIME;
  144. ftLastAccessTime : TFILETIME;
  145. ftLastWriteTime : TFILETIME;
  146. nFileSizeHigh : DWORD;
  147. nFileSizeLow : DWORD;
  148. dwReserved0 : DWORD;
  149. dwReserved1 : DWORD;
  150. cFileName : array[0..(MAX_PATH)-1] of CHAR;
  151. cAlternateFileName : array[0..13] of CHAR;
  152. end;
  153. {$ENDIF}
  154. TWin32FindData = WIN32_FIND_DATAA;
  155. {$IFDEF MSWINDOWS}
  156. WIN32_FIND_DATAW = Windows.WIN32_FIND_DATAW;
  157. {$ELSE}
  158. WIN32_FIND_DATAW = packed record
  159. dwFileAttributes : DWORD;
  160. ftCreationTime : TFILETIME;
  161. ftLastAccessTime : TFILETIME;
  162. ftLastWriteTime : TFILETIME;
  163. nFileSizeHigh : DWORD;
  164. nFileSizeLow : DWORD;
  165. dwReserved0 : DWORD;
  166. dwReserved1 : DWORD;
  167. cFileName : array[0..(MAX_PATH)-1] of WCHAR;
  168. cAlternateFileName : array[0..13] of WCHAR;
  169. end;
  170. {$ENDIF}
  171. TWin32FindDataW = WIN32_FIND_DATAW;
  172. type
  173. tRemoteInfo=record
  174. SizeLow,SizeHigh:longint;
  175. LastWriteTime:TFileTime;
  176. Attr:longint;
  177. end;
  178. pRemoteInfo=^tRemoteInfo;
  179. type
  180. tFsDefaultParamStruct=record
  181. size,
  182. PluginInterfaceVersionLow,
  183. PluginInterfaceVersionHi:longint;
  184. DefaultIniName:array[0..MAX_PATH-1] of char;
  185. end;
  186. pFsDefaultParamStruct=^tFsDefaultParamStruct;
  187. { For compatibility with Delphi use $IFDEF's to set calling convention }
  188. { callback functions }
  189. type
  190. TProgressProc=function(PluginNr:integer;SourceName,
  191. TargetName:pchar;PercentDone:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  192. TProgressProcW=function(PluginNr:integer;SourceName,
  193. TargetName:pwidechar;PercentDone:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  194. TLogProc=procedure(PluginNr,MsgType:integer;LogString:pchar); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  195. TLogProcW=procedure(PluginNr,MsgType:integer;LogString:pwidechar); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  196. TRequestProc=function(PluginNr,RequestType:integer;CustomTitle,CustomText,
  197. ReturnedText:pchar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  198. TRequestProcW=function(PluginNr,RequestType:integer;CustomTitle,CustomText,
  199. ReturnedText:pwidechar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  200. TCryptProc=function(PluginNr,CryptoNumber:integer;mode:integer;ConnectionName,
  201. Password:pchar;maxlen:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  202. TCryptProcW=function(PluginNr,CryptoNumber:integer;mode:integer;ConnectionName,
  203. Password:pwidechar;maxlen:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  204. { Function prototypes - the callback functions MUST be implemented exactly like this! }
  205. (*
  206. function FsInit(PluginNr:integer;pProgressProc:tProgressProc;pLogProc:tLogProc;
  207. pRequestProc:tRequestProc):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  208. function FsInitW(PluginNr:integer;pProgressProcW:tProgressProcW;pLogProcW:tLogProcW;
  209. pRequestProcW:tRequestProcW):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  210. procedure FsSetCryptCallback(CryptProc:TCryptProc;CryptoNr,Flags:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  211. procedure FsSetCryptCallbackW(CryptProcW:TCryptProcW;CryptoNr,Flags:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  212. function FsFindFirst(path :pchar;var FindData:tWIN32FINDDATA):thandle; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  213. function FsFindFirstW(path :pwidechar;var FindData:tWIN32FINDDATAW):thandle; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  214. function FsFindNext(Hdl:thandle;var FindData:tWIN32FINDDATA):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  215. function FsFindNextW(Hdl:thandle;var FindDataW:tWIN32FINDDATAW):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  216. function FsFindClose(Hdl:thandle):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  217. function FsMkDir(RemoteDir:pchar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  218. function FsMkDirW(RemoteDir:pwidechar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  219. function FsExecuteFile(MainWin:HWND;RemoteName,Verb:pchar):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  220. function FsExecuteFileW(MainWin:HWND;RemoteName,Verb:pwidechar):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  221. function FsRenMovFile(OldName,NewName:pchar;Move,OverWrite:bool;
  222. RemoteInfo:pRemoteInfo):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  223. function FsRenMovFileW(OldName,NewName:pwidechar;Move,OverWrite:bool;
  224. RemoteInfo:pRemoteInfo):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  225. function FsGetFile(RemoteName,LocalName:pchar;CopyFlags:integer;
  226. RemoteInfo:pRemoteInfo):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  227. function FsGetFileW(RemoteName,LocalName:pwidechar;CopyFlags:integer;
  228. RemoteInfo:pRemoteInfo):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  229. function FsPutFile(LocalName,RemoteName:pchar;CopyFlags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  230. function FsPutFileW(LocalName,RemoteName:pwidechar;CopyFlags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  231. function FsDeleteFile(RemoteName:pchar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  232. function FsDeleteFileW(RemoteName:pwidechar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  233. function FsRemoveDir(RemoteName:pchar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  234. function FsRemoveDirW(RemoteName:pwidechar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  235. function FsDisconnect(DisconnectRoot:pchar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  236. function FsDisconnectW(DisconnectRoot:pwidechar):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  237. function FsSetAttr(RemoteName:pchar;NewAttr:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  238. function FsSetAttrW(RemoteName:pwidechar;NewAttr:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  239. function FsSetTime(RemoteName:pchar;CreationTime,LastAccessTime,
  240. LastWriteTime:PFileTime):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  241. function FsSetTimeW(RemoteName:pwidechar;CreationTime,LastAccessTime,
  242. LastWriteTime:PFileTime):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  243. procedure FsStatusInfo(RemoteDir:pchar;InfoStartEnd,InfoOperation:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  244. procedure FsStatusInfoW(RemoteDir:pwidechar;InfoStartEnd,InfoOperation:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  245. procedure FsGetDefRootName(DefRootName:pchar;maxlen:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  246. function FsExtractCustomIcon(RemoteName:pchar;ExtractFlags:integer;
  247. TheIcon: PWfxIcon):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  248. function FsExtractCustomIconW(RemoteName:pwidechar;ExtractFlags:integer;
  249. TheIcon: PWfxIcon):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  250. procedure FsSetDefaultParams(dps:pFsDefaultParamStruct); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  251. function FsGetPreviewBitmap(RemoteName:pchar;width,height:integer,
  252. ReturnedBitmap: PWfxIcon):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  253. function FsGetPreviewBitmapW(RemoteName:pwidechar;width,height:integer,
  254. ReturnedBitmap: PWfxIcon):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  255. function FsLinksToLocalFiles:bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  256. function FsGetLocalName(RemoteName:pchar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  257. function FsGetLocalNameW(RemoteName:pwidechar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  258. *)
  259. {****************************** content plugin part *****************************}
  260. const ft_nomorefields=0;
  261. ft_numeric_32=1;
  262. ft_numeric_64=2;
  263. ft_numeric_floating=3;
  264. ft_date=4;
  265. ft_time=5;
  266. ft_boolean=6;
  267. ft_multiplechoice=7;
  268. ft_string=8;
  269. ft_fulltext=9;
  270. ft_datetime=10;
  271. ft_stringw=11;
  272. // for ContentGetValue
  273. ft_nosuchfield=-1;
  274. ft_fileerror=-2;
  275. ft_fieldempty=-3;
  276. ft_ondemand=-4;
  277. ft_delayed=0;
  278. // for ContentSetValue
  279. ft_setsuccess=0;
  280. setflags_first_attribute=1; {First attribute of this file}
  281. setflags_last_attribute=2;
  282. setflags_only_date=4;
  283. CONTENT_DELAYIFSLOW=1; // ContentGetValue called in foreground
  284. type tContentDefaultParamStruct=record
  285. size,
  286. PluginInterfaceVersionLow,
  287. PluginInterfaceVersionHi:longint;
  288. DefaultIniName:array[0..MAX_PATH-1] of char;
  289. end;
  290. pContentDefaultParamStruct=^tContentDefaultParamStruct;
  291. type tdateformat=record
  292. wYear,wMonth,wDay:word;
  293. end;
  294. pdateformat=^tdateformat;
  295. type ttimeformat=record
  296. wHour,wMinute,wSecond:word;
  297. end;
  298. ptimeformat=^ttimeformat;
  299. { Function prototypes: }
  300. (*
  301. procedure FsContentGetDetectString(DetectString:pchar;maxlen:integer); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  302. function FsContentGetSupportedField(FieldIndex:integer;FieldName:pchar;
  303. Units:pchar;maxlen:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  304. function FsContentGetValue(FileName:pchar;FieldIndex,UnitIndex:integer;FieldValue:pbyte;
  305. maxlen,flags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  306. function FsContentGetValueW(FileName:pwidechar;FieldIndex,UnitIndex:integer;FieldValue:pbyte;
  307. maxlen,flags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  308. procedure FsContentSetDefaultParams(dps:pContentDefaultParamStruct); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  309. procedure FsContentStopGetValue(FileName:pchar); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  310. procedure FsContentStopGetValueW(FileName:pwidechar); {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  311. function FsContentGetDefaultSortOrder(FieldIndex:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  312. function FsContentGetSupportedFieldFlags(FieldIndex:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  313. function FsContentSetValue(FileName:pchar;FieldIndex,UnitIndex,FieldType:integer;
  314. FieldValue:pbyte;flags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  315. function FsContentSetValueW(FileName:pwidechar;FieldIndex,UnitIndex,FieldType:integer;
  316. FieldValue:pbyte;flags:integer):integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  317. function FsContentGetDefaultView(ViewContents,ViewHeaders,ViewWidths,
  318. ViewOptions:pchar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  319. function FsContentGetDefaultViewW(ViewContents,ViewHeaders,ViewWidths,
  320. ViewOptions:pwidechar;maxlen:integer):bool; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  321. function FsGetBackgroundFlags:integer; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF};
  322. *)
  323. implementation
  324. end.