jwawpapi.pas 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535
  1. {******************************************************************************}
  2. { }
  3. { Web Publishing API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: wpapi.h, released June 2000. The original Pascal }
  9. { code is: WPApi.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. unit JwaWPApi;
  43. {$WEAKPACKAGEUNIT}
  44. {$HPPEMIT ''}
  45. {$HPPEMIT '#include "wpapi.h"'}
  46. {$HPPEMIT ''}
  47. {$I jediapilib.inc}
  48. interface
  49. uses
  50. JwaWPTypes, JwaWinType;
  51. //
  52. // Flags
  53. //
  54. const
  55. WPF_NO_RECURSIVE_POST = $00000001; // WpPost
  56. {$EXTERNALSYM WPF_NO_RECURSIVE_POST}
  57. WPF_NO_WIZARD = $00000002; // WpPost
  58. {$EXTERNALSYM WPF_NO_WIZARD}
  59. WPF_MINIMAL_UI = $00000004; // WpPost - OBSOLETE
  60. {$EXTERNALSYM WPF_MINIMAL_UI}
  61. WPF_FIRST_FILE_AS_DEFAULT = $00000008; // WpPost/PostFiles
  62. {$EXTERNALSYM WPF_FIRST_FILE_AS_DEFAULT}
  63. WPF_NO_DIRECT_LOOKUP = $00000010; // WpBindToSite
  64. {$EXTERNALSYM WPF_NO_DIRECT_LOOKUP}
  65. WPF_NO_URL_LOOKUP = $00000020; // WpBindToSite
  66. {$EXTERNALSYM WPF_NO_URL_LOOKUP}
  67. WPF_USE_PROVIDER_PASSED = $00000040; // WpCreateSite
  68. {$EXTERNALSYM WPF_USE_PROVIDER_PASSED}
  69. WPF_NO_VERIFY_POST = $00000080; // WpPost
  70. {$EXTERNALSYM WPF_NO_VERIFY_POST}
  71. WPF_NO_PROGRESS_DLGS = $00000200; // WpPost
  72. {$EXTERNALSYM WPF_NO_PROGRESS_DLGS}
  73. WPF_SHOWPAGE_WELCOME = $00010000; // WpPost/Wizard
  74. {$EXTERNALSYM WPF_SHOWPAGE_WELCOME}
  75. WPF_SHOWPAGE_SRCFILE = $00020000; // WpPost/Wizard
  76. {$EXTERNALSYM WPF_SHOWPAGE_SRCFILE}
  77. WPF_SHOWPAGE_DESTSITE = $00040000; // WpPost/Wizard
  78. {$EXTERNALSYM WPF_SHOWPAGE_DESTSITE}
  79. WPF_SHOWPAGE_PROVIDER = $00080000; // WpPost/Wizard/AddWizardPages
  80. {$EXTERNALSYM WPF_SHOWPAGE_PROVIDER}
  81. WPF_ENABLE_LOCAL_BASE_DIR = $00100000; // WpPost/Wizard
  82. {$EXTERNALSYM WPF_ENABLE_LOCAL_BASE_DIR}
  83. WPF_NO_UI = WPF_NO_WIZARD or WPF_NO_PROGRESS_DLGS;
  84. {$EXTERNALSYM WPF_NO_UI}
  85. WPF_SHOWPAGE_ALL = WPF_SHOWPAGE_WELCOME or WPF_SHOWPAGE_SRCFILE or WPF_SHOWPAGE_DESTSITE or WPF_SHOWPAGE_PROVIDER;
  86. {$EXTERNALSYM WPF_SHOWPAGE_ALL}
  87. //
  88. // Miscellaneous
  89. //
  90. MAX_SITENAME_LEN = 128;
  91. {$EXTERNALSYM MAX_SITENAME_LEN}
  92. //
  93. // Unicode APIs
  94. //
  95. function WpPostW(hwnd: HWND; dwNumLocalPaths: DWORD; pwsLocalPaths: LPWSTR;
  96. var pdwSiteNameBufLen: DWORD; wsSiteName: LPWSTR; var pdwDestURLBufLen: DWORD;
  97. wsDestURL: LPWSTR; dwFlag: DWORD): DWORD; stdcall;
  98. {$EXTERNALSYM WpPostW}
  99. function WpListSitesW(var pdwSitesBufLen: DWORD; pSitesBuffer: LPWPSITEINFOW;
  100. var pdwNumSites: DWORD): DWORD; stdcall;
  101. {$EXTERNALSYM WpListSitesW}
  102. function WpDoesSiteExistW(wsSiteName: LPCWSTR; var pfSiteExists: BOOL): DWORD; stdcall;
  103. {$EXTERNALSYM WpDoesSiteExistW}
  104. function WpDeleteSiteW(wsSiteName: LPCWSTR): DWORD; stdcall;
  105. {$EXTERNALSYM WpDeleteSiteW}
  106. function WpBindToSiteW(hwnd: HWND; wsSiteName, wsSitePostingURL: LPCWSTR;
  107. dwFlag, dwReserved: DWORD; out ppvUnk: IUnknown): DWORD; stdcall;
  108. {$EXTERNALSYM WpBindToSiteW}
  109. function WpCreateSiteW(wsSiteName, wsSiteLocalBaseDir, wsSitePostingURL,
  110. wsProviderCLSID: LPCWSTR; dwFlags: DWORD): DWORD; stdcall;
  111. {$EXTERNALSYM WpCreateSiteW}
  112. function WpEnumProvidersW(var pdwProvidersBufLen: DWORD; pProvidersBuffer: LPWPPROVINFOW;
  113. var pdwNumProviders: DWORD): DWORD; stdcall;
  114. {$EXTERNALSYM WpEnumProvidersW}
  115. function WpGetErrorStringW(uErrCode: UINT; wsOutputBuf: LPWSTR; var pdwBufLen: DWORD): DWORD; stdcall;
  116. {$EXTERNALSYM WpGetErrorStringW}
  117. //
  118. // ANSI APIs
  119. //
  120. function WpPostA(hwnd: HWND; dwNumLocalPaths: DWORD; pwsLocalPaths: LPSTR;
  121. var pdwSiteNameBufLen: DWORD; wsSiteName: LPSTR; var pdwDestURLBufLen: DWORD;
  122. wsDestURL: LPSTR; dwFlag: DWORD): DWORD; stdcall;
  123. {$EXTERNALSYM WpPostA}
  124. function WpListSitesA(var pdwSitesBufLen: DWORD; pSitesBuffer: LPWPSITEINFOA;
  125. var pdwNumSites: DWORD): DWORD; stdcall;
  126. {$EXTERNALSYM WpListSitesA}
  127. function WpDoesSiteExistA(wsSiteName: LPCSTR; var pfSiteExists: BOOL): DWORD; stdcall;
  128. {$EXTERNALSYM WpDoesSiteExistA}
  129. function WpDeleteSiteA(wsSiteName: LPCSTR): DWORD; stdcall;
  130. {$EXTERNALSYM WpDeleteSiteA}
  131. function WpBindToSiteA(hwnd: HWND; wsSiteName, wsSitePostingURL: LPCSTR;
  132. dwFlag, dwReserved: DWORD; out ppvUnk: IUnknown): DWORD; stdcall;
  133. {$EXTERNALSYM WpBindToSiteA}
  134. function WpCreateSiteA(wsSiteName, wsSiteLocalBaseDir, wsSitePostingURL,
  135. wsProviderCLSID: LPCSTR; dwFlags: DWORD): DWORD; stdcall;
  136. {$EXTERNALSYM WpCreateSiteA}
  137. function WpEnumProvidersA(var pdwProvidersBufLen: DWORD; pProvidersBuffer: LPWPPROVINFOA;
  138. var pdwNumProviders: DWORD): DWORD; stdcall;
  139. {$EXTERNALSYM WpEnumProvidersA}
  140. function WpGetErrorStringA(uErrCode: UINT; wsOutputBuf: LPSTR; var pdwBufLen: DWORD): DWORD; stdcall;
  141. {$EXTERNALSYM WpGetErrorStringA}
  142. function WpPost(hwnd: HWND; dwNumLocalPaths: DWORD; pwsLocalPaths: LPTSTR;
  143. var pdwSiteNameBufLen: DWORD; wsSiteName: LPTSTR; var pdwDestURLBufLen: DWORD;
  144. wsDestURL: LPTSTR; dwFlag: DWORD): DWORD; stdcall;
  145. {$EXTERNALSYM WpPost}
  146. function WpListSites(var pdwSitesBufLen: DWORD; pSitesBuffer: LPWPSITEINFO;
  147. var pdwNumSites: DWORD): DWORD; stdcall;
  148. {$EXTERNALSYM WpListSites}
  149. function WpDoesSiteExist(wsSiteName: LPCTSTR; var pfSiteExists: BOOL): DWORD; stdcall;
  150. {$EXTERNALSYM WpDoesSiteExist}
  151. function WpDeleteSite(wsSiteName: LPCTSTR): DWORD; stdcall;
  152. {$EXTERNALSYM WpDeleteSite}
  153. function WpBindToSite(hwnd: HWND; wsSiteName, wsSitePostingURL: LPCTSTR;
  154. dwFlag, dwReserved: DWORD; out ppvUnk: IUnknown): DWORD; stdcall;
  155. {$EXTERNALSYM WpBindToSite}
  156. function WpCreateSite(wsSiteName, wsSiteLocalBaseDir, wsSitePostingURL, wsProviderCLSID: LPCTSTR; dwFlags: DWORD): DWORD; stdcall;
  157. {$EXTERNALSYM WpCreateSite}
  158. function WpEnumProviders(var pdwProvidersBufLen: DWORD; pProvidersBuffer: LPWPPROVINFO;
  159. var pdwNumProviders: DWORD): DWORD; stdcall;
  160. {$EXTERNALSYM WpEnumProviders}
  161. function WpGetErrorString(uErrCode: UINT; wsOutputBuf: LPTSTR; var pdwBufLen: DWORD): DWORD; stdcall;
  162. {$EXTERNALSYM WpGetErrorString}
  163. implementation
  164. const
  165. wpapilib = 'wpapi.dll';
  166. {$IFDEF UNICODE}
  167. AWSuffix = 'W';
  168. {$ELSE}
  169. AWSuffix = 'A';
  170. {$ENDIF UNICODE}
  171. {$IFDEF DYNAMIC_LINK}
  172. var
  173. _WpPostA: Pointer;
  174. function WpPostA;
  175. begin
  176. GetProcedureAddress(_WpPostA, wpapilib, 'WpPostA');
  177. asm
  178. MOV ESP, EBP
  179. POP EBP
  180. JMP [_WpPostA]
  181. end;
  182. end;
  183. var
  184. _WpListSitesA: Pointer;
  185. function WpListSitesA;
  186. begin
  187. GetProcedureAddress(_WpListSitesA, wpapilib, 'WpListSitesA');
  188. asm
  189. MOV ESP, EBP
  190. POP EBP
  191. JMP [_WpListSitesA]
  192. end;
  193. end;
  194. var
  195. _WpDoesSiteExistA: Pointer;
  196. function WpDoesSiteExistA;
  197. begin
  198. GetProcedureAddress(_WpDoesSiteExistA, wpapilib, 'WpDoesSiteExistA');
  199. asm
  200. MOV ESP, EBP
  201. POP EBP
  202. JMP [_WpDoesSiteExistA]
  203. end;
  204. end;
  205. var
  206. _WpDeleteSiteA: Pointer;
  207. function WpDeleteSiteA;
  208. begin
  209. GetProcedureAddress(_WpDeleteSiteA, wpapilib, 'WpDeleteSiteA');
  210. asm
  211. MOV ESP, EBP
  212. POP EBP
  213. JMP [_WpDeleteSiteA]
  214. end;
  215. end;
  216. var
  217. _WpBindToSiteA: Pointer;
  218. function WpBindToSiteA;
  219. begin
  220. GetProcedureAddress(_WpBindToSiteA, wpapilib, 'WpBindToSiteA');
  221. asm
  222. MOV ESP, EBP
  223. POP EBP
  224. JMP [_WpBindToSiteA]
  225. end;
  226. end;
  227. var
  228. _WpCreateSiteA: Pointer;
  229. function WpCreateSiteA;
  230. begin
  231. GetProcedureAddress(_WpCreateSiteA, wpapilib, 'WpCreateSiteA');
  232. asm
  233. MOV ESP, EBP
  234. POP EBP
  235. JMP [_WpCreateSiteA]
  236. end;
  237. end;
  238. var
  239. _WpEnumProvidersA: Pointer;
  240. function WpEnumProvidersA;
  241. begin
  242. GetProcedureAddress(_WpEnumProvidersA, wpapilib, 'WpEnumProvidersA');
  243. asm
  244. MOV ESP, EBP
  245. POP EBP
  246. JMP [_WpEnumProvidersA]
  247. end;
  248. end;
  249. var
  250. _WpGetErrorStringA: Pointer;
  251. function WpGetErrorStringA;
  252. begin
  253. GetProcedureAddress(_WpGetErrorStringA, wpapilib, 'WpGetErrorStringA');
  254. asm
  255. MOV ESP, EBP
  256. POP EBP
  257. JMP [_WpGetErrorStringA]
  258. end;
  259. end;
  260. var
  261. _WpPostW: Pointer;
  262. function WpPostW;
  263. begin
  264. GetProcedureAddress(_WpPostW, wpapilib, 'WpPostW');
  265. asm
  266. MOV ESP, EBP
  267. POP EBP
  268. JMP [_WpPostW]
  269. end;
  270. end;
  271. var
  272. _WpListSitesW: Pointer;
  273. function WpListSitesW;
  274. begin
  275. GetProcedureAddress(_WpListSitesW, wpapilib, 'WpListSitesW');
  276. asm
  277. MOV ESP, EBP
  278. POP EBP
  279. JMP [_WpListSitesW]
  280. end;
  281. end;
  282. var
  283. _WpDoesSiteExistW: Pointer;
  284. function WpDoesSiteExistW;
  285. begin
  286. GetProcedureAddress(_WpDoesSiteExistW, wpapilib, 'WpDoesSiteExistW');
  287. asm
  288. MOV ESP, EBP
  289. POP EBP
  290. JMP [_WpDoesSiteExistW]
  291. end;
  292. end;
  293. var
  294. _WpDeleteSiteW: Pointer;
  295. function WpDeleteSiteW;
  296. begin
  297. GetProcedureAddress(_WpDeleteSiteW, wpapilib, 'WpDeleteSiteW');
  298. asm
  299. MOV ESP, EBP
  300. POP EBP
  301. JMP [_WpDeleteSiteW]
  302. end;
  303. end;
  304. var
  305. _WpBindToSiteW: Pointer;
  306. function WpBindToSiteW;
  307. begin
  308. GetProcedureAddress(_WpBindToSiteW, wpapilib, 'WpBindToSiteW');
  309. asm
  310. MOV ESP, EBP
  311. POP EBP
  312. JMP [_WpBindToSiteW]
  313. end;
  314. end;
  315. var
  316. _WpCreateSiteW: Pointer;
  317. function WpCreateSiteW;
  318. begin
  319. GetProcedureAddress(_WpCreateSiteW, wpapilib, 'WpCreateSiteW');
  320. asm
  321. MOV ESP, EBP
  322. POP EBP
  323. JMP [_WpCreateSiteW]
  324. end;
  325. end;
  326. var
  327. _WpEnumProvidersW: Pointer;
  328. function WpEnumProvidersW;
  329. begin
  330. GetProcedureAddress(_WpEnumProvidersW, wpapilib, 'WpEnumProvidersW');
  331. asm
  332. MOV ESP, EBP
  333. POP EBP
  334. JMP [_WpEnumProvidersW]
  335. end;
  336. end;
  337. var
  338. _WpGetErrorStringW: Pointer;
  339. function WpGetErrorStringW;
  340. begin
  341. GetProcedureAddress(_WpGetErrorStringW, wpapilib, 'WpGetErrorStringW');
  342. asm
  343. MOV ESP, EBP
  344. POP EBP
  345. JMP [_WpGetErrorStringW]
  346. end;
  347. end;
  348. var
  349. _WpPost: Pointer;
  350. function WpPost;
  351. begin
  352. GetProcedureAddress(_WpPost, wpapilib, 'WpPost' + AWSuffix);
  353. asm
  354. MOV ESP, EBP
  355. POP EBP
  356. JMP [_WpPost]
  357. end;
  358. end;
  359. var
  360. _WpListSites: Pointer;
  361. function WpListSites;
  362. begin
  363. GetProcedureAddress(_WpListSites, wpapilib, 'WpListSites' + AWSuffix);
  364. asm
  365. MOV ESP, EBP
  366. POP EBP
  367. JMP [_WpListSites]
  368. end;
  369. end;
  370. var
  371. _WpDoesSiteExist: Pointer;
  372. function WpDoesSiteExist;
  373. begin
  374. GetProcedureAddress(_WpDoesSiteExist, wpapilib, 'WpDoesSiteExist' + AWSuffix);
  375. asm
  376. MOV ESP, EBP
  377. POP EBP
  378. JMP [_WpDoesSiteExist]
  379. end;
  380. end;
  381. var
  382. _WpDeleteSite: Pointer;
  383. function WpDeleteSite;
  384. begin
  385. GetProcedureAddress(_WpDeleteSite, wpapilib, 'WpDeleteSite' + AWSuffix);
  386. asm
  387. MOV ESP, EBP
  388. POP EBP
  389. JMP [_WpDeleteSite]
  390. end;
  391. end;
  392. var
  393. _WpBindToSite: Pointer;
  394. function WpBindToSite;
  395. begin
  396. GetProcedureAddress(_WpBindToSite, wpapilib, 'WpBindToSite' + AWSuffix);
  397. asm
  398. MOV ESP, EBP
  399. POP EBP
  400. JMP [_WpBindToSite]
  401. end;
  402. end;
  403. var
  404. _WpCreateSite: Pointer;
  405. function WpCreateSite;
  406. begin
  407. GetProcedureAddress(_WpCreateSite, wpapilib, 'WpCreateSite' + AWSuffix);
  408. asm
  409. MOV ESP, EBP
  410. POP EBP
  411. JMP [_WpCreateSite]
  412. end;
  413. end;
  414. var
  415. _WpEnumProviders: Pointer;
  416. function WpEnumProviders;
  417. begin
  418. GetProcedureAddress(_WpEnumProviders, wpapilib, 'WpEnumProviders' + AWSuffix);
  419. asm
  420. MOV ESP, EBP
  421. POP EBP
  422. JMP [_WpEnumProviders]
  423. end;
  424. end;
  425. var
  426. _WpGetErrorString: Pointer;
  427. function WpGetErrorString;
  428. begin
  429. GetProcedureAddress(_WpGetErrorString, wpapilib, 'WpGetErrorString' + AWSuffix);
  430. asm
  431. MOV ESP, EBP
  432. POP EBP
  433. JMP [_WpGetErrorString]
  434. end;
  435. end;
  436. {$ELSE}
  437. function WpPostA; external wpapilib name 'WpPostA';
  438. function WpListSitesA; external wpapilib name 'WpListSitesA';
  439. function WpDoesSiteExistA; external wpapilib name 'WpDoesSiteExistA';
  440. function WpDeleteSiteA; external wpapilib name 'WpDeleteSiteA';
  441. function WpBindToSiteA; external wpapilib name 'WpBindToSiteA';
  442. function WpCreateSiteA; external wpapilib name 'WpCreateSiteA';
  443. function WpEnumProvidersA; external wpapilib name 'WpEnumProvidersA';
  444. function WpGetErrorStringA; external wpapilib name 'WpGetErrorStringA';
  445. function WpPostW; external wpapilib name 'WpPostW';
  446. function WpListSitesW; external wpapilib name 'WpListSitesW';
  447. function WpDoesSiteExistW; external wpapilib name 'WpDoesSiteExistW';
  448. function WpDeleteSiteW; external wpapilib name 'WpDeleteSiteW';
  449. function WpBindToSiteW; external wpapilib name 'WpBindToSiteW';
  450. function WpCreateSiteW; external wpapilib name 'WpCreateSiteW';
  451. function WpEnumProvidersW; external wpapilib name 'WpEnumProvidersW';
  452. function WpGetErrorStringW; external wpapilib name 'WpGetErrorStringW';
  453. function WpPost; external wpapilib name 'WpPost' + AWSuffix;
  454. function WpListSites; external wpapilib name 'WpListSites' + AWSuffix;
  455. function WpDoesSiteExist; external wpapilib name 'WpDoesSiteExist' + AWSuffix;
  456. function WpDeleteSite; external wpapilib name 'WpDeleteSite' + AWSuffix;
  457. function WpBindToSite; external wpapilib name 'WpBindToSite' + AWSuffix;
  458. function WpCreateSite; external wpapilib name 'WpCreateSite' + AWSuffix;
  459. function WpEnumProviders; external wpapilib name 'WpEnumProviders' + AWSuffix;
  460. function WpGetErrorString; external wpapilib name 'WpGetErrorString' + AWSuffix;
  461. {$ENDIF DYNAMIC_LINK}
  462. end.