jwawpapi.pas 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531
  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. // $Id: JwaWPApi.pas,v 1.8 2005/09/06 16:36:50 marquardt Exp $
  43. unit JwaWPApi;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "wpapi.h"'}
  47. {$HPPEMIT ''}
  48. {$I jediapilib.inc}
  49. interface
  50. uses
  51. JwaWPTypes, JwaWindows;
  52. //
  53. // Flags
  54. //
  55. const
  56. WPF_NO_RECURSIVE_POST = $00000001; // WpPost
  57. {$EXTERNALSYM WPF_NO_RECURSIVE_POST}
  58. WPF_NO_WIZARD = $00000002; // WpPost
  59. {$EXTERNALSYM WPF_NO_WIZARD}
  60. WPF_MINIMAL_UI = $00000004; // WpPost - OBSOLETE
  61. {$EXTERNALSYM WPF_MINIMAL_UI}
  62. WPF_FIRST_FILE_AS_DEFAULT = $00000008; // WpPost/PostFiles
  63. {$EXTERNALSYM WPF_FIRST_FILE_AS_DEFAULT}
  64. WPF_NO_DIRECT_LOOKUP = $00000010; // WpBindToSite
  65. {$EXTERNALSYM WPF_NO_DIRECT_LOOKUP}
  66. WPF_NO_URL_LOOKUP = $00000020; // WpBindToSite
  67. {$EXTERNALSYM WPF_NO_URL_LOOKUP}
  68. WPF_USE_PROVIDER_PASSED = $00000040; // WpCreateSite
  69. {$EXTERNALSYM WPF_USE_PROVIDER_PASSED}
  70. WPF_NO_VERIFY_POST = $00000080; // WpPost
  71. {$EXTERNALSYM WPF_NO_VERIFY_POST}
  72. WPF_NO_PROGRESS_DLGS = $00000200; // WpPost
  73. {$EXTERNALSYM WPF_NO_PROGRESS_DLGS}
  74. WPF_SHOWPAGE_WELCOME = $00010000; // WpPost/Wizard
  75. {$EXTERNALSYM WPF_SHOWPAGE_WELCOME}
  76. WPF_SHOWPAGE_SRCFILE = $00020000; // WpPost/Wizard
  77. {$EXTERNALSYM WPF_SHOWPAGE_SRCFILE}
  78. WPF_SHOWPAGE_DESTSITE = $00040000; // WpPost/Wizard
  79. {$EXTERNALSYM WPF_SHOWPAGE_DESTSITE}
  80. WPF_SHOWPAGE_PROVIDER = $00080000; // WpPost/Wizard/AddWizardPages
  81. {$EXTERNALSYM WPF_SHOWPAGE_PROVIDER}
  82. WPF_ENABLE_LOCAL_BASE_DIR = $00100000; // WpPost/Wizard
  83. {$EXTERNALSYM WPF_ENABLE_LOCAL_BASE_DIR}
  84. WPF_NO_UI = WPF_NO_WIZARD or WPF_NO_PROGRESS_DLGS;
  85. {$EXTERNALSYM WPF_NO_UI}
  86. WPF_SHOWPAGE_ALL = WPF_SHOWPAGE_WELCOME or WPF_SHOWPAGE_SRCFILE or WPF_SHOWPAGE_DESTSITE or WPF_SHOWPAGE_PROVIDER;
  87. {$EXTERNALSYM WPF_SHOWPAGE_ALL}
  88. //
  89. // Miscellaneous
  90. //
  91. MAX_SITENAME_LEN = 128;
  92. {$EXTERNALSYM MAX_SITENAME_LEN}
  93. //
  94. // Unicode APIs
  95. //
  96. function WpPostW(hwnd: HWND; dwNumLocalPaths: DWORD; pwsLocalPaths: LPWSTR;
  97. var pdwSiteNameBufLen: DWORD; wsSiteName: LPWSTR; var pdwDestURLBufLen: DWORD;
  98. wsDestURL: LPWSTR; dwFlag: DWORD): DWORD; stdcall;
  99. {$EXTERNALSYM WpPostW}
  100. function WpListSitesW(var pdwSitesBufLen: DWORD; pSitesBuffer: LPWPSITEINFOW;
  101. var pdwNumSites: DWORD): DWORD; stdcall;
  102. {$EXTERNALSYM WpListSitesW}
  103. function WpDoesSiteExistW(wsSiteName: LPCWSTR; var pfSiteExists: BOOL): DWORD; stdcall;
  104. {$EXTERNALSYM WpDoesSiteExistW}
  105. function WpDeleteSiteW(wsSiteName: LPCWSTR): DWORD; stdcall;
  106. {$EXTERNALSYM WpDeleteSiteW}
  107. function WpBindToSiteW(hwnd: HWND; wsSiteName, wsSitePostingURL: LPCWSTR;
  108. dwFlag, dwReserved: DWORD; out ppvUnk: IUnknown): DWORD; stdcall;
  109. {$EXTERNALSYM WpBindToSiteW}
  110. function WpCreateSiteW(wsSiteName, wsSiteLocalBaseDir, wsSitePostingURL,
  111. wsProviderCLSID: LPCWSTR; dwFlags: DWORD): DWORD; stdcall;
  112. {$EXTERNALSYM WpCreateSiteW}
  113. function WpEnumProvidersW(var pdwProvidersBufLen: DWORD; pProvidersBuffer: LPWPPROVINFOW;
  114. var pdwNumProviders: DWORD): DWORD; stdcall;
  115. {$EXTERNALSYM WpEnumProvidersW}
  116. function WpGetErrorStringW(uErrCode: UINT; wsOutputBuf: LPWSTR; var pdwBufLen: DWORD): DWORD; stdcall;
  117. {$EXTERNALSYM WpGetErrorStringW}
  118. //
  119. // ANSI APIs
  120. //
  121. function WpPostA(hwnd: HWND; dwNumLocalPaths: DWORD; pwsLocalPaths: LPSTR;
  122. var pdwSiteNameBufLen: DWORD; wsSiteName: LPSTR; var pdwDestURLBufLen: DWORD;
  123. wsDestURL: LPSTR; dwFlag: DWORD): DWORD; stdcall;
  124. {$EXTERNALSYM WpPostA}
  125. function WpListSitesA(var pdwSitesBufLen: DWORD; pSitesBuffer: LPWPSITEINFOA;
  126. var pdwNumSites: DWORD): DWORD; stdcall;
  127. {$EXTERNALSYM WpListSitesA}
  128. function WpDoesSiteExistA(wsSiteName: LPCSTR; var pfSiteExists: BOOL): DWORD; stdcall;
  129. {$EXTERNALSYM WpDoesSiteExistA}
  130. function WpDeleteSiteA(wsSiteName: LPCSTR): DWORD; stdcall;
  131. {$EXTERNALSYM WpDeleteSiteA}
  132. function WpBindToSiteA(hwnd: HWND; wsSiteName, wsSitePostingURL: LPCSTR;
  133. dwFlag, dwReserved: DWORD; out ppvUnk: IUnknown): DWORD; stdcall;
  134. {$EXTERNALSYM WpBindToSiteA}
  135. function WpCreateSiteA(wsSiteName, wsSiteLocalBaseDir, wsSitePostingURL,
  136. wsProviderCLSID: LPCSTR; dwFlags: DWORD): DWORD; stdcall;
  137. {$EXTERNALSYM WpCreateSiteA}
  138. function WpEnumProvidersA(var pdwProvidersBufLen: DWORD; pProvidersBuffer: LPWPPROVINFOA;
  139. var pdwNumProviders: DWORD): DWORD; stdcall;
  140. {$EXTERNALSYM WpEnumProvidersA}
  141. function WpGetErrorStringA(uErrCode: UINT; wsOutputBuf: LPSTR; var pdwBufLen: DWORD): DWORD; stdcall;
  142. {$EXTERNALSYM WpGetErrorStringA}
  143. function WpPost(hwnd: HWND; dwNumLocalPaths: DWORD; pwsLocalPaths: LPTSTR;
  144. var pdwSiteNameBufLen: DWORD; wsSiteName: LPTSTR; var pdwDestURLBufLen: DWORD;
  145. wsDestURL: LPTSTR; dwFlag: DWORD): DWORD; stdcall;
  146. {$EXTERNALSYM WpPost}
  147. function WpListSites(var pdwSitesBufLen: DWORD; pSitesBuffer: LPWPSITEINFO;
  148. var pdwNumSites: DWORD): DWORD; stdcall;
  149. {$EXTERNALSYM WpListSites}
  150. function WpDoesSiteExist(wsSiteName: LPCTSTR; var pfSiteExists: BOOL): DWORD; stdcall;
  151. {$EXTERNALSYM WpDoesSiteExist}
  152. function WpDeleteSite(wsSiteName: LPCTSTR): DWORD; stdcall;
  153. {$EXTERNALSYM WpDeleteSite}
  154. function WpBindToSite(hwnd: HWND; wsSiteName, wsSitePostingURL: LPCTSTR;
  155. dwFlag, dwReserved: DWORD; out ppvUnk: IUnknown): DWORD; stdcall;
  156. {$EXTERNALSYM WpBindToSite}
  157. function WpCreateSite(wsSiteName, wsSiteLocalBaseDir, wsSitePostingURL, wsProviderCLSID: LPCTSTR; dwFlags: DWORD): DWORD; stdcall;
  158. {$EXTERNALSYM WpCreateSite}
  159. function WpEnumProviders(var pdwProvidersBufLen: DWORD; pProvidersBuffer: LPWPPROVINFO;
  160. var pdwNumProviders: DWORD): DWORD; stdcall;
  161. {$EXTERNALSYM WpEnumProviders}
  162. function WpGetErrorString(uErrCode: UINT; wsOutputBuf: LPTSTR; var pdwBufLen: DWORD): DWORD; stdcall;
  163. {$EXTERNALSYM WpGetErrorString}
  164. implementation
  165. uses
  166. JwaWinDLLNames;
  167. {$IFDEF DYNAMIC_LINK}
  168. var
  169. _WpPostA: Pointer;
  170. function WpPostA;
  171. begin
  172. GetProcedureAddress(_WpPostA, wpapilib, 'WpPostA');
  173. asm
  174. MOV ESP, EBP
  175. POP EBP
  176. JMP [_WpPostA]
  177. end;
  178. end;
  179. var
  180. _WpListSitesA: Pointer;
  181. function WpListSitesA;
  182. begin
  183. GetProcedureAddress(_WpListSitesA, wpapilib, 'WpListSitesA');
  184. asm
  185. MOV ESP, EBP
  186. POP EBP
  187. JMP [_WpListSitesA]
  188. end;
  189. end;
  190. var
  191. _WpDoesSiteExistA: Pointer;
  192. function WpDoesSiteExistA;
  193. begin
  194. GetProcedureAddress(_WpDoesSiteExistA, wpapilib, 'WpDoesSiteExistA');
  195. asm
  196. MOV ESP, EBP
  197. POP EBP
  198. JMP [_WpDoesSiteExistA]
  199. end;
  200. end;
  201. var
  202. _WpDeleteSiteA: Pointer;
  203. function WpDeleteSiteA;
  204. begin
  205. GetProcedureAddress(_WpDeleteSiteA, wpapilib, 'WpDeleteSiteA');
  206. asm
  207. MOV ESP, EBP
  208. POP EBP
  209. JMP [_WpDeleteSiteA]
  210. end;
  211. end;
  212. var
  213. _WpBindToSiteA: Pointer;
  214. function WpBindToSiteA;
  215. begin
  216. GetProcedureAddress(_WpBindToSiteA, wpapilib, 'WpBindToSiteA');
  217. asm
  218. MOV ESP, EBP
  219. POP EBP
  220. JMP [_WpBindToSiteA]
  221. end;
  222. end;
  223. var
  224. _WpCreateSiteA: Pointer;
  225. function WpCreateSiteA;
  226. begin
  227. GetProcedureAddress(_WpCreateSiteA, wpapilib, 'WpCreateSiteA');
  228. asm
  229. MOV ESP, EBP
  230. POP EBP
  231. JMP [_WpCreateSiteA]
  232. end;
  233. end;
  234. var
  235. _WpEnumProvidersA: Pointer;
  236. function WpEnumProvidersA;
  237. begin
  238. GetProcedureAddress(_WpEnumProvidersA, wpapilib, 'WpEnumProvidersA');
  239. asm
  240. MOV ESP, EBP
  241. POP EBP
  242. JMP [_WpEnumProvidersA]
  243. end;
  244. end;
  245. var
  246. _WpGetErrorStringA: Pointer;
  247. function WpGetErrorStringA;
  248. begin
  249. GetProcedureAddress(_WpGetErrorStringA, wpapilib, 'WpGetErrorStringA');
  250. asm
  251. MOV ESP, EBP
  252. POP EBP
  253. JMP [_WpGetErrorStringA]
  254. end;
  255. end;
  256. var
  257. _WpPostW: Pointer;
  258. function WpPostW;
  259. begin
  260. GetProcedureAddress(_WpPostW, wpapilib, 'WpPostW');
  261. asm
  262. MOV ESP, EBP
  263. POP EBP
  264. JMP [_WpPostW]
  265. end;
  266. end;
  267. var
  268. _WpListSitesW: Pointer;
  269. function WpListSitesW;
  270. begin
  271. GetProcedureAddress(_WpListSitesW, wpapilib, 'WpListSitesW');
  272. asm
  273. MOV ESP, EBP
  274. POP EBP
  275. JMP [_WpListSitesW]
  276. end;
  277. end;
  278. var
  279. _WpDoesSiteExistW: Pointer;
  280. function WpDoesSiteExistW;
  281. begin
  282. GetProcedureAddress(_WpDoesSiteExistW, wpapilib, 'WpDoesSiteExistW');
  283. asm
  284. MOV ESP, EBP
  285. POP EBP
  286. JMP [_WpDoesSiteExistW]
  287. end;
  288. end;
  289. var
  290. _WpDeleteSiteW: Pointer;
  291. function WpDeleteSiteW;
  292. begin
  293. GetProcedureAddress(_WpDeleteSiteW, wpapilib, 'WpDeleteSiteW');
  294. asm
  295. MOV ESP, EBP
  296. POP EBP
  297. JMP [_WpDeleteSiteW]
  298. end;
  299. end;
  300. var
  301. _WpBindToSiteW: Pointer;
  302. function WpBindToSiteW;
  303. begin
  304. GetProcedureAddress(_WpBindToSiteW, wpapilib, 'WpBindToSiteW');
  305. asm
  306. MOV ESP, EBP
  307. POP EBP
  308. JMP [_WpBindToSiteW]
  309. end;
  310. end;
  311. var
  312. _WpCreateSiteW: Pointer;
  313. function WpCreateSiteW;
  314. begin
  315. GetProcedureAddress(_WpCreateSiteW, wpapilib, 'WpCreateSiteW');
  316. asm
  317. MOV ESP, EBP
  318. POP EBP
  319. JMP [_WpCreateSiteW]
  320. end;
  321. end;
  322. var
  323. _WpEnumProvidersW: Pointer;
  324. function WpEnumProvidersW;
  325. begin
  326. GetProcedureAddress(_WpEnumProvidersW, wpapilib, 'WpEnumProvidersW');
  327. asm
  328. MOV ESP, EBP
  329. POP EBP
  330. JMP [_WpEnumProvidersW]
  331. end;
  332. end;
  333. var
  334. _WpGetErrorStringW: Pointer;
  335. function WpGetErrorStringW;
  336. begin
  337. GetProcedureAddress(_WpGetErrorStringW, wpapilib, 'WpGetErrorStringW');
  338. asm
  339. MOV ESP, EBP
  340. POP EBP
  341. JMP [_WpGetErrorStringW]
  342. end;
  343. end;
  344. var
  345. _WpPost: Pointer;
  346. function WpPost;
  347. begin
  348. GetProcedureAddress(_WpPost, wpapilib, 'WpPost' + AWSuffix);
  349. asm
  350. MOV ESP, EBP
  351. POP EBP
  352. JMP [_WpPost]
  353. end;
  354. end;
  355. var
  356. _WpListSites: Pointer;
  357. function WpListSites;
  358. begin
  359. GetProcedureAddress(_WpListSites, wpapilib, 'WpListSites' + AWSuffix);
  360. asm
  361. MOV ESP, EBP
  362. POP EBP
  363. JMP [_WpListSites]
  364. end;
  365. end;
  366. var
  367. _WpDoesSiteExist: Pointer;
  368. function WpDoesSiteExist;
  369. begin
  370. GetProcedureAddress(_WpDoesSiteExist, wpapilib, 'WpDoesSiteExist' + AWSuffix);
  371. asm
  372. MOV ESP, EBP
  373. POP EBP
  374. JMP [_WpDoesSiteExist]
  375. end;
  376. end;
  377. var
  378. _WpDeleteSite: Pointer;
  379. function WpDeleteSite;
  380. begin
  381. GetProcedureAddress(_WpDeleteSite, wpapilib, 'WpDeleteSite' + AWSuffix);
  382. asm
  383. MOV ESP, EBP
  384. POP EBP
  385. JMP [_WpDeleteSite]
  386. end;
  387. end;
  388. var
  389. _WpBindToSite: Pointer;
  390. function WpBindToSite;
  391. begin
  392. GetProcedureAddress(_WpBindToSite, wpapilib, 'WpBindToSite' + AWSuffix);
  393. asm
  394. MOV ESP, EBP
  395. POP EBP
  396. JMP [_WpBindToSite]
  397. end;
  398. end;
  399. var
  400. _WpCreateSite: Pointer;
  401. function WpCreateSite;
  402. begin
  403. GetProcedureAddress(_WpCreateSite, wpapilib, 'WpCreateSite' + AWSuffix);
  404. asm
  405. MOV ESP, EBP
  406. POP EBP
  407. JMP [_WpCreateSite]
  408. end;
  409. end;
  410. var
  411. _WpEnumProviders: Pointer;
  412. function WpEnumProviders;
  413. begin
  414. GetProcedureAddress(_WpEnumProviders, wpapilib, 'WpEnumProviders' + AWSuffix);
  415. asm
  416. MOV ESP, EBP
  417. POP EBP
  418. JMP [_WpEnumProviders]
  419. end;
  420. end;
  421. var
  422. _WpGetErrorString: Pointer;
  423. function WpGetErrorString;
  424. begin
  425. GetProcedureAddress(_WpGetErrorString, wpapilib, 'WpGetErrorString' + AWSuffix);
  426. asm
  427. MOV ESP, EBP
  428. POP EBP
  429. JMP [_WpGetErrorString]
  430. end;
  431. end;
  432. {$ELSE}
  433. function WpPostA; external wpapilib name 'WpPostA';
  434. function WpListSitesA; external wpapilib name 'WpListSitesA';
  435. function WpDoesSiteExistA; external wpapilib name 'WpDoesSiteExistA';
  436. function WpDeleteSiteA; external wpapilib name 'WpDeleteSiteA';
  437. function WpBindToSiteA; external wpapilib name 'WpBindToSiteA';
  438. function WpCreateSiteA; external wpapilib name 'WpCreateSiteA';
  439. function WpEnumProvidersA; external wpapilib name 'WpEnumProvidersA';
  440. function WpGetErrorStringA; external wpapilib name 'WpGetErrorStringA';
  441. function WpPostW; external wpapilib name 'WpPostW';
  442. function WpListSitesW; external wpapilib name 'WpListSitesW';
  443. function WpDoesSiteExistW; external wpapilib name 'WpDoesSiteExistW';
  444. function WpDeleteSiteW; external wpapilib name 'WpDeleteSiteW';
  445. function WpBindToSiteW; external wpapilib name 'WpBindToSiteW';
  446. function WpCreateSiteW; external wpapilib name 'WpCreateSiteW';
  447. function WpEnumProvidersW; external wpapilib name 'WpEnumProvidersW';
  448. function WpGetErrorStringW; external wpapilib name 'WpGetErrorStringW';
  449. function WpPost; external wpapilib name 'WpPost' + AWSuffix;
  450. function WpListSites; external wpapilib name 'WpListSites' + AWSuffix;
  451. function WpDoesSiteExist; external wpapilib name 'WpDoesSiteExist' + AWSuffix;
  452. function WpDeleteSite; external wpapilib name 'WpDeleteSite' + AWSuffix;
  453. function WpBindToSite; external wpapilib name 'WpBindToSite' + AWSuffix;
  454. function WpCreateSite; external wpapilib name 'WpCreateSite' + AWSuffix;
  455. function WpEnumProviders; external wpapilib name 'WpEnumProviders' + AWSuffix;
  456. function WpGetErrorString; external wpapilib name 'WpGetErrorString' + AWSuffix;
  457. {$ENDIF DYNAMIC_LINK}
  458. end.