jwahtmlhelp.pas 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830
  1. {******************************************************************************}
  2. { }
  3. { HTML Help 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: htmlhelp.h, released July 2000. The original Pascal }
  9. { code is: HtmlHelp.pas, released September 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. { Contributor(s): Robert Chandler (robert att helpware dott net) }
  16. { Kurt Senfer (ks att siemens dott dk) }
  17. { }
  18. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  19. { }
  20. { You may retrieve the latest version of this file at the Project JEDI }
  21. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  22. { }
  23. { The contents of this file are used with permission, subject to the Mozilla }
  24. { Public License Version 1.1 (the "License"); you may not use this file except }
  25. { in compliance with the License. You may obtain a copy of the License at }
  26. { http://www.mozilla.org/MPL/MPL-1.1.html }
  27. { }
  28. { Software distributed under the License is distributed on an "AS IS" basis, }
  29. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  30. { the specific language governing rights and limitations under the License. }
  31. { }
  32. { Alternatively, the contents of this file may be used under the terms of the }
  33. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  34. { provisions of the LGPL License are applicable instead of those above. }
  35. { If you wish to allow use of your version of this file only under the terms }
  36. { of the LGPL License and not to allow others to use your version of this file }
  37. { under the MPL, indicate your decision by deleting the provisions above and }
  38. { replace them with the notice and other provisions required by the LGPL }
  39. { License. If you do not delete the provisions above, a recipient may use }
  40. { your version of this file under either the MPL or the LGPL License. }
  41. { }
  42. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  43. { }
  44. {******************************************************************************}
  45. unit JwaHtmlHelp;
  46. {$I jediapilib.inc}
  47. interface
  48. {$WEAKPACKAGEUNIT}
  49. (*$HPPEMIT ''*)
  50. (*$HPPEMIT '#include "htmlhelp.h"'*)
  51. (*$HPPEMIT ''*)
  52. (*$HPPEMIT 'typedef struct tagHH_LAST_ERROR'*)
  53. (*$HPPEMIT '{'*)
  54. (*$HPPEMIT ' int cbStruct ;'*)
  55. (*$HPPEMIT ' HRESULT hr ;'*)
  56. (*$HPPEMIT ' BSTR description ;'*)
  57. (*$HPPEMIT '} HH_LAST_ERROR ;'*)
  58. (*$HPPEMIT ''*)
  59. uses
  60. {$IFDEF HAS_UNIT_VARIANTS}
  61. Variants,
  62. {$ENDIF HAS_UNIT_VARIANTS}
  63. JwaWinType, JwaWinUser;
  64. // Commands to pass to HtmlHelp()
  65. const
  66. HH_DISPLAY_TOPIC = $0000;
  67. {$EXTERNALSYM HH_DISPLAY_TOPIC}
  68. HH_HELP_FINDER = $0000; // WinHelp equivalent
  69. {$EXTERNALSYM HH_HELP_FINDER}
  70. HH_DISPLAY_TOC = $0001; // not currently implemented
  71. {$EXTERNALSYM HH_DISPLAY_TOC}
  72. HH_DISPLAY_INDEX = $0002; // not currently implemented
  73. {$EXTERNALSYM HH_DISPLAY_INDEX}
  74. HH_DISPLAY_SEARCH = $0003; // not currently implemented
  75. {$EXTERNALSYM HH_DISPLAY_SEARCH}
  76. HH_SET_WIN_TYPE = $0004;
  77. {$EXTERNALSYM HH_SET_WIN_TYPE}
  78. HH_GET_WIN_TYPE = $0005;
  79. {$EXTERNALSYM HH_GET_WIN_TYPE}
  80. HH_GET_WIN_HANDLE = $0006;
  81. {$EXTERNALSYM HH_GET_WIN_HANDLE}
  82. HH_ENUM_INFO_TYPE = $0007; // Get Info type name, call repeatedly to enumerate, -1 at end
  83. {$EXTERNALSYM HH_ENUM_INFO_TYPE}
  84. HH_SET_INFO_TYPE = $0008; // Add Info type to filter.
  85. {$EXTERNALSYM HH_SET_INFO_TYPE}
  86. HH_SYNC = $0009;
  87. {$EXTERNALSYM HH_SYNC}
  88. {$IFDEF HTMLHELP11}
  89. HH_ADD_NAV_UI = $000A; // not currently implemented
  90. {$EXTERNALSYM HH_ADD_NAV_UI}
  91. HH_ADD_BUTTON = $000B; // not currently implemented
  92. {$EXTERNALSYM HH_ADD_BUTTON}
  93. HH_GETBROWSER_APP = $000C; // not currently implemented
  94. {$EXTERNALSYM HH_GETBROWSER_APP}
  95. {$ENDIF HTMLHELP11}
  96. {$IFDEF HTMLHELP12}
  97. HH_RESERVED1 = $000A;
  98. {$EXTERNALSYM HH_RESERVED1}
  99. HH_RESERVED2 = $000B;
  100. {$EXTERNALSYM HH_RESERVED2}
  101. HH_RESERVED3 = $000C;
  102. {$EXTERNALSYM HH_RESERVED3}
  103. {$ENDIF HTMLHELP12}
  104. HH_KEYWORD_LOOKUP = $000D;
  105. {$EXTERNALSYM HH_KEYWORD_LOOKUP}
  106. HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup window
  107. {$EXTERNALSYM HH_DISPLAY_TEXT_POPUP}
  108. HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData
  109. {$EXTERNALSYM HH_HELP_CONTEXT}
  110. HH_TP_HELP_CONTEXTMENU = $0010; // text popup help, same as WinHelp HELP_CONTEXTMENU
  111. {$EXTERNALSYM HH_TP_HELP_CONTEXTMENU}
  112. HH_TP_HELP_WM_HELP = $0011; // text popup help, same as WinHelp HELP_WM_HELP
  113. {$EXTERNALSYM HH_TP_HELP_WM_HELP}
  114. HH_CLOSE_ALL = $0012; // close all windows opened directly or indirectly by the caller
  115. {$EXTERNALSYM HH_CLOSE_ALL}
  116. HH_ALINK_LOOKUP = $0013; // ALink version of HH_KEYWORD_LOOKUP
  117. {$EXTERNALSYM HH_ALINK_LOOKUP}
  118. HH_GET_LAST_ERROR = $0014; // not currently implemented, See HHERROR.h
  119. {$EXTERNALSYM HH_GET_LAST_ERROR}
  120. HH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at end
  121. {$EXTERNALSYM HH_ENUM_CATEGORY}
  122. HH_ENUM_CATEGORY_IT = $0016; // Get category info type members, call repeatedly to enumerate, -1 at end
  123. {$EXTERNALSYM HH_ENUM_CATEGORY_IT}
  124. HH_RESET_IT_FILTER = $0017; // Clear the info type filter of all info types.
  125. {$EXTERNALSYM HH_RESET_IT_FILTER}
  126. HH_SET_INCLUSIVE_FILTER = $0018; // set inclusive filtering method for untyped topics to be included in display
  127. {$EXTERNALSYM HH_SET_INCLUSIVE_FILTER}
  128. HH_SET_EXCLUSIVE_FILTER = $0019; // set exclusive filtering method for untyped topics to be excluded from display
  129. {$EXTERNALSYM HH_SET_EXCLUSIVE_FILTER}
  130. {$IFDEF HTMLHELP11}
  131. HH_SET_GUID = $001A; // For Microsoft Installer -- dwData is a pointer to the GUID string
  132. {$EXTERNALSYM HH_SET_GUID}
  133. {$ENDIF HTMLHELP11}
  134. {$IFDEF HTMLHELP12}
  135. HH_INITIALIZE = $001C; // Initializes the help system.
  136. {$EXTERNALSYM HH_INITIALIZE}
  137. HH_UNINITIALIZE = $001D; // Uninitializes the help system.
  138. {$EXTERNALSYM HH_UNINITIALIZE}
  139. HH_PRETRANSLATEMESSAGE = $00FD; // Pumps messages. (NULL, NULL, MSG*).
  140. {$EXTERNALSYM HH_PRETRANSLATEMESSAGE}
  141. HH_SET_GLOBAL_PROPERTY = $00FC; // Set a global property. (NULL, NULL, HH_GPROP)
  142. {$EXTERNALSYM HH_SET_GLOBAL_PROPERTY}
  143. {$ENDIF HTMLHELP12}
  144. {$IFDEF HTMLHELP11}
  145. HH_INTERNAL = $00FF; // Used internally.
  146. {$EXTERNALSYM HH_INTERNAL}
  147. {$ENDIF HTMLHELP11}
  148. {$IFDEF HTMLHELP12}
  149. HHWIN_PROP_TAB_AUTOHIDESHOW = 1 shl 0; // Automatically hide/show tri-pane window
  150. {$EXTERNALSYM HHWIN_PROP_TAB_AUTOHIDESHOW}
  151. {$ENDIF HTMLHELP12}
  152. HHWIN_PROP_ONTOP = 1 shl 1; // Top-most window (not currently implemented)
  153. {$EXTERNALSYM HHWIN_PROP_ONTOP}
  154. HHWIN_PROP_NOTITLEBAR = 1 shl 2; // no title bar
  155. {$EXTERNALSYM HHWIN_PROP_NOTITLEBAR}
  156. HHWIN_PROP_NODEF_STYLES = 1 shl 3; // no default window styles (only HH_WINTYPE.dwStyles)
  157. {$EXTERNALSYM HHWIN_PROP_NODEF_STYLES}
  158. HHWIN_PROP_NODEF_EXSTYLES = 1 shl 4; // no default extended window styles (only HH_WINTYPE.dwExStyles)
  159. {$EXTERNALSYM HHWIN_PROP_NODEF_EXSTYLES}
  160. HHWIN_PROP_TRI_PANE = 1 shl 5; // use a tri-pane window
  161. {$EXTERNALSYM HHWIN_PROP_TRI_PANE}
  162. HHWIN_PROP_NOTB_TEXT = 1 shl 6; // no text on toolbar buttons
  163. {$EXTERNALSYM HHWIN_PROP_NOTB_TEXT}
  164. HHWIN_PROP_POST_QUIT = 1 shl 7; // post WM_QUIT message when window closes
  165. {$EXTERNALSYM HHWIN_PROP_POST_QUIT}
  166. HHWIN_PROP_AUTO_SYNC = 1 shl 8; // automatically ssync contents and index
  167. {$EXTERNALSYM HHWIN_PROP_AUTO_SYNC}
  168. HHWIN_PROP_TRACKING = 1 shl 9; // send tracking notification messages
  169. {$EXTERNALSYM HHWIN_PROP_TRACKING}
  170. HHWIN_PROP_TAB_SEARCH = 1 shl 10; // include search tab in navigation pane
  171. {$EXTERNALSYM HHWIN_PROP_TAB_SEARCH}
  172. HHWIN_PROP_TAB_HISTORY = 1 shl 11; // include history tab in navigation pane
  173. {$EXTERNALSYM HHWIN_PROP_TAB_HISTORY}
  174. {$IFDEF HTMLHELP11}
  175. HHWIN_PROP_TAB_BOOKMARKS = 1 shl 12; // include bookmark tab in navigation pane
  176. {$EXTERNALSYM HHWIN_PROP_TAB_BOOKMARKS}
  177. {$ENDIF HTMLHELP11}
  178. {$IFDEF HTMLHELP12}
  179. HHWIN_PROP_TAB_FAVORITES = 1 shl 12; // include favorites tab in navigation pane
  180. {$EXTERNALSYM HHWIN_PROP_TAB_FAVORITES}
  181. {$ENDIF HTMLHELP12}
  182. HHWIN_PROP_CHANGE_TITLE = 1 shl 13; // Put current HTML title in title bar
  183. {$EXTERNALSYM HHWIN_PROP_CHANGE_TITLE}
  184. HHWIN_PROP_NAV_ONLY_WIN = 1 shl 14; // Only display the navigation window
  185. {$EXTERNALSYM HHWIN_PROP_NAV_ONLY_WIN}
  186. HHWIN_PROP_NO_TOOLBAR = 1 shl 15; // Don't display a toolbar
  187. {$EXTERNALSYM HHWIN_PROP_NO_TOOLBAR}
  188. HHWIN_PROP_MENU = 1 shl 16; // Menu
  189. {$EXTERNALSYM HHWIN_PROP_MENU}
  190. HHWIN_PROP_TAB_ADVSEARCH = 1 shl 17; // Advanced FTS UI.
  191. {$EXTERNALSYM HHWIN_PROP_TAB_ADVSEARCH}
  192. HHWIN_PROP_USER_POS = 1 shl 18; // After initial creation, user controls window size/Position
  193. {$EXTERNALSYM HHWIN_PROP_USER_POS}
  194. {$IFDEF HTMLHELP12}
  195. HHWIN_PROP_TAB_CUSTOM1 = 1 shl 19; // Use custom tab #1
  196. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM1}
  197. HHWIN_PROP_TAB_CUSTOM2 = 1 shl 20; // Use custom tab #2
  198. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM2}
  199. HHWIN_PROP_TAB_CUSTOM3 = 1 shl 21; // Use custom tab #3
  200. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM3}
  201. HHWIN_PROP_TAB_CUSTOM4 = 1 shl 22; // Use custom tab #4
  202. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM4}
  203. HHWIN_PROP_TAB_CUSTOM5 = 1 shl 23; // Use custom tab #5
  204. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM5}
  205. HHWIN_PROP_TAB_CUSTOM6 = 1 shl 24; // Use custom tab #6
  206. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM6}
  207. HHWIN_PROP_TAB_CUSTOM7 = 1 shl 25; // Use custom tab #7
  208. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM7}
  209. HHWIN_PROP_TAB_CUSTOM8 = 1 shl 26; // Use custom tab #8
  210. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM8}
  211. HHWIN_PROP_TAB_CUSTOM9 = 1 shl 27; // Use custom tab #9
  212. {$EXTERNALSYM HHWIN_PROP_TAB_CUSTOM9}
  213. HHWIN_TB_MARGIN = 1 shl 28; // the window type has a margin
  214. {$EXTERNALSYM HHWIN_TB_MARGIN}
  215. {$ENDIF HTMLHELP12}
  216. HHWIN_PARAM_PROPERTIES = 1 shl 1; // valid fsWinProperties
  217. {$EXTERNALSYM HHWIN_PARAM_PROPERTIES}
  218. HHWIN_PARAM_STYLES = 1 shl 2; // valid dwStyles
  219. {$EXTERNALSYM HHWIN_PARAM_STYLES}
  220. HHWIN_PARAM_EXSTYLES = 1 shl 3; // valid dwExStyles
  221. {$EXTERNALSYM HHWIN_PARAM_EXSTYLES}
  222. HHWIN_PARAM_RECT = 1 shl 4; // valid rcWindowPos
  223. {$EXTERNALSYM HHWIN_PARAM_RECT}
  224. HHWIN_PARAM_NAV_WIDTH = 1 shl 5; // valid iNavWidth
  225. {$EXTERNALSYM HHWIN_PARAM_NAV_WIDTH}
  226. HHWIN_PARAM_SHOWSTATE = 1 shl 6; // valid nShowState
  227. {$EXTERNALSYM HHWIN_PARAM_SHOWSTATE}
  228. HHWIN_PARAM_INFOTYPES = 1 shl 7; // valid apInfoTypes
  229. {$EXTERNALSYM HHWIN_PARAM_INFOTYPES}
  230. HHWIN_PARAM_TB_FLAGS = 1 shl 8; // valid fsToolBarFlags
  231. {$EXTERNALSYM HHWIN_PARAM_TB_FLAGS}
  232. HHWIN_PARAM_EXPANSION = 1 shl 9; // valid fNotExpanded
  233. {$EXTERNALSYM HHWIN_PARAM_EXPANSION}
  234. HHWIN_PARAM_TABPOS = 1 shl 10; // valid tabpos
  235. {$EXTERNALSYM HHWIN_PARAM_TABPOS}
  236. HHWIN_PARAM_TABORDER = 1 shl 11; // valid taborder
  237. {$EXTERNALSYM HHWIN_PARAM_TABORDER}
  238. HHWIN_PARAM_HISTORY_COUNT = 1 shl 12; // valid cHistory
  239. {$EXTERNALSYM HHWIN_PARAM_HISTORY_COUNT}
  240. HHWIN_PARAM_CUR_TAB = 1 shl 13; // valid curNavType
  241. {$EXTERNALSYM HHWIN_PARAM_CUR_TAB}
  242. HHWIN_BUTTON_EXPAND = 1 shl 1; // Expand/contract button
  243. {$EXTERNALSYM HHWIN_BUTTON_EXPAND}
  244. HHWIN_BUTTON_BACK = 1 shl 2; // Back button
  245. {$EXTERNALSYM HHWIN_BUTTON_BACK}
  246. HHWIN_BUTTON_FORWARD = 1 shl 3; // Forward button
  247. {$EXTERNALSYM HHWIN_BUTTON_FORWARD}
  248. HHWIN_BUTTON_STOP = 1 shl 4; // Stop button
  249. {$EXTERNALSYM HHWIN_BUTTON_STOP}
  250. HHWIN_BUTTON_REFRESH = 1 shl 5; // Refresh button
  251. {$EXTERNALSYM HHWIN_BUTTON_REFRESH}
  252. HHWIN_BUTTON_HOME = 1 shl 6; // Home button
  253. {$EXTERNALSYM HHWIN_BUTTON_HOME}
  254. HHWIN_BUTTON_BROWSE_FWD = 1 shl 7; // not implemented
  255. {$EXTERNALSYM HHWIN_BUTTON_BROWSE_FWD}
  256. HHWIN_BUTTON_BROWSE_BCK = 1 shl 8; // not implemented
  257. {$EXTERNALSYM HHWIN_BUTTON_BROWSE_BCK}
  258. HHWIN_BUTTON_NOTES = 1 shl 9; // not implemented
  259. {$EXTERNALSYM HHWIN_BUTTON_NOTES}
  260. HHWIN_BUTTON_CONTENTS = 1 shl 10; // not implemented
  261. {$EXTERNALSYM HHWIN_BUTTON_CONTENTS}
  262. HHWIN_BUTTON_SYNC = 1 shl 11; // Sync button
  263. {$EXTERNALSYM HHWIN_BUTTON_SYNC}
  264. HHWIN_BUTTON_OPTIONS = 1 shl 12; // Options button
  265. {$EXTERNALSYM HHWIN_BUTTON_OPTIONS}
  266. HHWIN_BUTTON_PRINT = 1 shl 13; // Print button
  267. {$EXTERNALSYM HHWIN_BUTTON_PRINT}
  268. HHWIN_BUTTON_INDEX = 1 shl 14; // not implemented
  269. {$EXTERNALSYM HHWIN_BUTTON_INDEX}
  270. HHWIN_BUTTON_SEARCH = 1 shl 15; // not implemented
  271. {$EXTERNALSYM HHWIN_BUTTON_SEARCH}
  272. HHWIN_BUTTON_HISTORY = 1 shl 16; // not implemented
  273. {$EXTERNALSYM HHWIN_BUTTON_HISTORY}
  274. {$IFDEF HTMLHELP11}
  275. HHWIN_BUTTON_BOOKMARKS = 1 shl 17; // not implemented
  276. {$EXTERNALSYM HHWIN_BUTTON_BOOKMARKS}
  277. {$ENDIF HTMLHELP11}
  278. {$IFDEF HTMLHELP12}
  279. HHWIN_BUTTON_FAVORITES = 1 shl 17; // not implemented
  280. {$EXTERNALSYM HHWIN_BUTTON_FAVORITES}
  281. {$ENDIF HTMLHELP12}
  282. HHWIN_BUTTON_JUMP1 = 1 shl 18;
  283. {$EXTERNALSYM HHWIN_BUTTON_JUMP1}
  284. HHWIN_BUTTON_JUMP2 = 1 shl 19;
  285. {$EXTERNALSYM HHWIN_BUTTON_JUMP2}
  286. HHWIN_BUTTON_ZOOM = 1 shl 20;
  287. {$EXTERNALSYM HHWIN_BUTTON_ZOOM}
  288. HHWIN_BUTTON_TOC_NEXT = 1 shl 21;
  289. {$EXTERNALSYM HHWIN_BUTTON_TOC_NEXT}
  290. HHWIN_BUTTON_TOC_PREV = 1 shl 22;
  291. {$EXTERNALSYM HHWIN_BUTTON_TOC_PREV}
  292. HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPAND or HHWIN_BUTTON_BACK or
  293. HHWIN_BUTTON_OPTIONS or HHWIN_BUTTON_PRINT;
  294. {$EXTERNALSYM HHWIN_DEF_BUTTONS}
  295. // Button IDs
  296. IDTB_EXPAND = 200;
  297. {$EXTERNALSYM IDTB_EXPAND}
  298. IDTB_CONTRACT = 201;
  299. {$EXTERNALSYM IDTB_CONTRACT}
  300. IDTB_STOP = 202;
  301. {$EXTERNALSYM IDTB_STOP}
  302. IDTB_REFRESH = 203;
  303. {$EXTERNALSYM IDTB_REFRESH}
  304. IDTB_BACK = 204;
  305. {$EXTERNALSYM IDTB_BACK}
  306. IDTB_HOME = 205;
  307. {$EXTERNALSYM IDTB_HOME}
  308. IDTB_SYNC = 206;
  309. {$EXTERNALSYM IDTB_SYNC}
  310. IDTB_PRINT = 207;
  311. {$EXTERNALSYM IDTB_PRINT}
  312. IDTB_OPTIONS = 208;
  313. {$EXTERNALSYM IDTB_OPTIONS}
  314. IDTB_FORWARD = 209;
  315. {$EXTERNALSYM IDTB_FORWARD}
  316. IDTB_NOTES = 210; // not implemented
  317. {$EXTERNALSYM IDTB_NOTES}
  318. IDTB_BROWSE_FWD = 211;
  319. {$EXTERNALSYM IDTB_BROWSE_FWD}
  320. IDTB_BROWSE_BACK = 212;
  321. {$EXTERNALSYM IDTB_BROWSE_BACK}
  322. IDTB_CONTENTS = 213; // not implemented
  323. {$EXTERNALSYM IDTB_CONTENTS}
  324. IDTB_INDEX = 214; // not implemented
  325. {$EXTERNALSYM IDTB_INDEX}
  326. IDTB_SEARCH = 215; // not implemented
  327. {$EXTERNALSYM IDTB_SEARCH}
  328. IDTB_HISTORY = 216; // not implemented
  329. {$EXTERNALSYM IDTB_HISTORY}
  330. {$IFDEF HTMLHELP11}
  331. IDTB_BOOKMARKS = 217; // not implemented
  332. {$EXTERNALSYM IDTB_BOOKMARKS}
  333. {$ENDIF HTMLHELP11}
  334. {$IFDEF HTMLHELP12}
  335. IDTB_FAVORITES = 217; // not implemented
  336. {$EXTERNALSYM IDTB_FAVORITES}
  337. {$ENDIF HTMLHELP12}
  338. IDTB_JUMP1 = 218;
  339. {$EXTERNALSYM IDTB_JUMP1}
  340. IDTB_JUMP2 = 219;
  341. {$EXTERNALSYM IDTB_JUMP2}
  342. IDTB_CUSTOMIZE = 221;
  343. {$EXTERNALSYM IDTB_CUSTOMIZE}
  344. IDTB_ZOOM = 222;
  345. {$EXTERNALSYM IDTB_ZOOM}
  346. IDTB_TOC_NEXT = 223;
  347. {$EXTERNALSYM IDTB_TOC_NEXT}
  348. IDTB_TOC_PREV = 224;
  349. {$EXTERNALSYM IDTB_TOC_PREV}
  350. // Notification codes
  351. HHN_FIRST = -860;
  352. {$EXTERNALSYM HHN_FIRST}
  353. HHN_LAST = -879;
  354. {$EXTERNALSYM HHN_LAST}
  355. HHN_NAVCOMPLETE = HHN_FIRST - 0;
  356. {$EXTERNALSYM HHN_NAVCOMPLETE}
  357. HHN_TRACK = HHN_FIRST - 1;
  358. {$EXTERNALSYM HHN_TRACK}
  359. HHN_WINDOW_CREATE = HHN_FIRST - 2;
  360. {$EXTERNALSYM HHN_WINDOW_CREATE}
  361. type
  362. PHHLastError = ^THHLastError;
  363. tagHH_LAST_ERROR = packed record
  364. cbStruct: INT; // size of this structure
  365. hr: HRESULT; // the last error code.
  366. description: LPWSTR; // a description of the error (unicode string - BSTR).
  367. end;
  368. THHLastError = tagHH_LAST_ERROR;
  369. PHHNNotify = ^THHNNotify;
  370. tagHHN_NOTIFY = packed record
  371. hdr: NMHDR;
  372. pszUrl: PCSTR; // multibyte null-terminated string
  373. end;
  374. {$EXTERNALSYM tagHHN_NOTIFY}
  375. HHN_NOTIFY = tagHHN_NOTIFY;
  376. {$EXTERNALSYM HHN_NOTIFY}
  377. THHNNotify = tagHHN_NOTIFY;
  378. PHHPopup = ^THHPopup;
  379. tagHH_POPUP = packed record
  380. cbStruct: Integer; // sizeof this structure
  381. hinst_: HINSTANCE; // instance handle for string resource
  382. idString: UINT; // string resource id, or text id if pszFile is specified in HtmlHelp call
  383. pszText: LPCTSTR; // used if idString is zero
  384. pt: POINT; // top center of popup window
  385. clrForeGround: COLORREF; // use -1 for default
  386. clrBackground: COLORREF; // use -1 for default
  387. rcMargins: RECT; // amount of space between edges of window and text, -1 for each member to ignore
  388. pszFont: LPCTSTR; // facename, point size, char set, BOLD ITALIC UNDERLINE
  389. end;
  390. {$EXTERNALSYM tagHH_POPUP}
  391. HH_POPUP = tagHH_POPUP;
  392. {$EXTERNALSYM HH_POPUP}
  393. THHPopup = tagHH_POPUP;
  394. PHHAKLink = ^THHAKLink;
  395. tagHH_AKLINK = packed record
  396. cbStruct: Integer; // sizeof this structure
  397. fReserved: BOOL; // must be FALSE (really!)
  398. pszKeywords: LPCTSTR; // semi-colon separated keywords
  399. pszUrl: LPCTSTR; // URL to jump to if no keywords found (may be NULL)
  400. pszMsgText: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
  401. pszMsgTitle: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
  402. pszWindow: LPCTSTR; // Window to display URL in
  403. fIndexOnFail: BOOL; // Displays index if keyword lookup fails.
  404. end;
  405. {$EXTERNALSYM tagHH_AKLINK}
  406. HH_AKLINK = tagHH_AKLINK;
  407. {$EXTERNALSYM HH_AKLINK}
  408. THHAKLink = tagHH_AKLINK;
  409. const
  410. HHWIN_NAVTYPE_TOC = 0;
  411. {$EXTERNALSYM HHWIN_NAVTYPE_TOC}
  412. HHWIN_NAVTYPE_INDEX = 1;
  413. {$EXTERNALSYM HHWIN_NAVTYPE_INDEX}
  414. HHWIN_NAVTYPE_SEARCH = 2;
  415. {$EXTERNALSYM HHWIN_NAVTYPE_SEARCH}
  416. {$IFDEF HTMLHELP11}
  417. HHWIN_NAVTYPE_BOOKMARKS = 3;
  418. {$EXTERNALSYM HHWIN_NAVTYPE_BOOKMARKS}
  419. HHWIN_NAVTYPE_HISTORY = 4; //not implemented
  420. {$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
  421. {$ENDIF HTMLHELP11}
  422. {$IFDEF HTMLHELP12}
  423. HHWIN_NAVTYPE_FAVORITES = 3;
  424. {$EXTERNALSYM HHWIN_NAVTYPE_FAVORITES}
  425. HHWIN_NAVTYPE_HISTORY = 4; //not implemented
  426. {$EXTERNALSYM HHWIN_NAVTYPE_HISTORY}
  427. HHWIN_NAVTYPE_AUTHOR = 5;
  428. {$EXTERNALSYM HHWIN_NAVTYPE_AUTHOR}
  429. HHWIN_NAVTYPE_CUSTOM_FIRST = 11;
  430. {$EXTERNALSYM HHWIN_NAVTYPE_CUSTOM_FIRST}
  431. {$ENDIF HTMLHELP12}
  432. IT_INCLUSIVE = 0;
  433. {$EXTERNALSYM IT_INCLUSIVE}
  434. IT_EXCLUSIVE = 1;
  435. {$EXTERNALSYM IT_EXCLUSIVE}
  436. IT_HIDDEN = 2;
  437. {$EXTERNALSYM IT_HIDDEN}
  438. type
  439. PHHEnumIT = ^THHEnumIT;
  440. tagHH_ENUM_IT = packed record
  441. cbStruct: Integer; // size of this structure
  442. iType: Integer; // the type of the information type ie. Inclusive, Exclusive, or Hidden
  443. pszCatName: LPCSTR; // Set to the name of the Category to enumerate the info types in a category; else NULL
  444. pszITName: LPCSTR; // volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
  445. pszITDescription: LPCSTR; // volitile pointer to the description of the infotype.
  446. end;
  447. {$EXTERNALSYM tagHH_ENUM_IT}
  448. HH_ENUM_IT = tagHH_ENUM_IT;
  449. {$EXTERNALSYM HH_ENUM_IT}
  450. PHH_ENUM_IT = ^tagHH_ENUM_IT;
  451. {$EXTERNALSYM PHH_ENUM_IT}
  452. THHEnumIT = tagHH_ENUM_IT;
  453. PHHEnumCat = ^THHEnumCat;
  454. tagHH_ENUM_CAT = packed record
  455. cbStruct: Integer; // size of this structure
  456. pszCatName: LPCSTR; // volitile pointer to the category name
  457. pszCatDescription: LPCSTR; // volitile pointer to the category description
  458. end;
  459. {$EXTERNALSYM tagHH_ENUM_CAT}
  460. HH_ENUM_CAT = tagHH_ENUM_CAT;
  461. {$EXTERNALSYM HH_ENUM_CAT}
  462. PHH_ENUM_CAT = ^tagHH_ENUM_CAT;
  463. {$EXTERNALSYM PHH_ENUM_CAT}
  464. THHEnumCat = tagHH_ENUM_CAT;
  465. PHHSetInfoType = ^THHSetInfoType;
  466. tagHH_SET_INFOTYPE = packed record
  467. cbStruct: Integer; // the size of this structure
  468. pszCatName: LPCSTR; // the name of the category, if any, the InfoType is a member of.
  469. pszInfoTypeName: LPCSTR; // the name of the info type to add to the filter
  470. end;
  471. {$EXTERNALSYM tagHH_SET_INFOTYPE}
  472. HH_SET_INFOTYPE = tagHH_SET_INFOTYPE;
  473. {$EXTERNALSYM HH_SET_INFOTYPE}
  474. PHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE;
  475. {$EXTERNALSYM PHH_SET_INFOTYPE}
  476. THHSetInfoType = tagHH_SET_INFOTYPE;
  477. HH_INFOTYPE = DWORD;
  478. {$EXTERNALSYM HH_INFOTYPE}
  479. PHH_INFOTYPE = ^HH_INFOTYPE;
  480. {$EXTERNALSYM PHH_INFOTYPE}
  481. PHHInfoType = ^THHInfoType;
  482. THHInfoType = HH_INFOTYPE;
  483. const
  484. HHWIN_NAVTAB_TOP = 0;
  485. {$EXTERNALSYM HHWIN_NAVTAB_TOP}
  486. HHWIN_NAVTAB_LEFT = 1;
  487. {$EXTERNALSYM HHWIN_NAVTAB_LEFT}
  488. HHWIN_NAVTAB_BOTTOM = 2;
  489. {$EXTERNALSYM HHWIN_NAVTAB_BOTTOM}
  490. HH_MAX_TABS = 19;
  491. {$EXTERNALSYM HH_MAX_TABS}
  492. HH_TAB_CONTENTS = 0;
  493. {$EXTERNALSYM HH_TAB_CONTENTS}
  494. HH_TAB_INDEX = 1;
  495. {$EXTERNALSYM HH_TAB_INDEX}
  496. HH_TAB_SEARCH = 2;
  497. {$EXTERNALSYM HH_TAB_SEARCH}
  498. {$IFDEF HTMLHELP11}
  499. HH_TAB_BOOKMARKS = 3;
  500. {$EXTERNALSYM HH_TAB_BOOKMARKS}
  501. HH_TAB_HISTORY = 4;
  502. {$EXTERNALSYM HH_TAB_HISTORY}
  503. {$ENDIF HTMLHELP11}
  504. {$IFDEF HTMLHELP12}
  505. HH_TAB_FAVORITES = 3;
  506. {$EXTERNALSYM HH_TAB_FAVORITES}
  507. HH_TAB_HISTORY = 4;
  508. {$EXTERNALSYM HH_TAB_HISTORY}
  509. HH_TAB_AUTHOR = 5;
  510. {$EXTERNALSYM HH_TAB_AUTHOR}
  511. HH_TAB_CUSTOM_FIRST = 11;
  512. {$EXTERNALSYM HH_TAB_CUSTOM_FIRST}
  513. HH_TAB_CUSTOM_LAST = HH_MAX_TABS;
  514. {$EXTERNALSYM HH_TAB_CUSTOM_LAST}
  515. HH_MAX_TABS_CUSTOM = HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1;
  516. {$EXTERNALSYM HH_MAX_TABS_CUSTOM}
  517. {$ENDIF HTMLHELP12}
  518. // HH_DISPLAY_SEARCH Command Related Structures and Constants
  519. HH_FTS_DEFAULT_PROXIMITY = -1;
  520. {$EXTERNALSYM HH_FTS_DEFAULT_PROXIMITY}
  521. type
  522. PHHFtsQuery = ^THHFtsQuery;
  523. tagHH_FTS_QUERY = packed record
  524. cbStruct: Integer; // Sizeof structure in bytes.
  525. fUniCodeStrings: BOOL; // TRUE if all strings are unicode.
  526. pszSearchQuery: LPCTSTR; // String containing the search query.
  527. iProximity: LONG; // Word proximity.
  528. fStemmedSearch: BOOL; // TRUE for StemmedSearch only.
  529. fTitleOnly: BOOL; // TRUE for Title search only.
  530. fExecute: BOOL; // TRUE to initiate the search.
  531. pszWindow: LPCTSTR; // Window to display in
  532. end;
  533. {$EXTERNALSYM tagHH_FTS_QUERY}
  534. HH_FTS_QUERY = tagHH_FTS_QUERY;
  535. {$EXTERNALSYM HH_FTS_QUERY}
  536. THHFtsQuery = tagHH_FTS_QUERY;
  537. PHHWinType = ^THHWinType;
  538. tagHH_WINTYPE = packed record
  539. cbStruct: Integer; // IN: size of this structure including all Information Types
  540. fUniCodeStrings: BOOL; // IN/OUT: TRUE if all strings are in UNICODE
  541. pszType: LPCTSTR; // IN/OUT: Name of a type of window
  542. fsValidMembers: DWORD; // IN: Bit flag of valid members (HHWIN_PARAM_)
  543. fsWinProperties: DWORD; // IN/OUT: Properties/attributes of the window (HHWIN_)
  544. pszCaption: LPCTSTR; // IN/OUT: Window title
  545. dwStyles: DWORD; // IN/OUT: Window styles
  546. dwExStyles: DWORD; // IN/OUT: Extended Window styles
  547. rcWindowPos: RECT; // IN: Starting position, OUT: current position
  548. nShowState: Integer; // IN: show state (e.g., SW_SHOW)
  549. hwndHelp: HWND; // OUT: window handle
  550. hwndCaller: HWND; // OUT: who called this window
  551. paInfoTypes: PHHInfoType; // IN: Pointer to an array of Information Types
  552. { The following members are only valid if HHWIN_PROP_TRI_PANE is set }
  553. hwndToolBar: HWND; // OUT: toolbar window in tri-pane window
  554. hwndNavigation: HWND; // OUT: navigation window in tri-pane window
  555. hwndHTML: HWND; // OUT: window displaying HTML in tri-pane window
  556. iNavWidth: Integer; // IN/OUT: width of navigation window
  557. rcHTML: RECT; // OUT: HTML window coordinates
  558. pszToc: LPCTSTR; // IN: Location of the table of contents file
  559. pszIndex: LPCTSTR; // IN: Location of the index file
  560. pszFile: LPCTSTR; // IN: Default location of the html file
  561. pszHome: LPCTSTR; // IN/OUT: html file to display when Home button is clicked
  562. fsToolBarFlags: DWORD; // IN: flags controling the appearance of the toolbar
  563. fNotExpanded: BOOL; // IN: TRUE/FALSE to contract or expand, OUT: current state
  564. curNavType: Integer; // IN/OUT: UI to display in the navigational pane
  565. tabpos: Integer; // IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM
  566. idNotify: Integer; // IN: ID to use for WM_NOTIFY messages
  567. tabOrder: array[0..HH_MAX_TABS] of Byte; // IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs
  568. cHistory: Integer; // IN/OUT: number of history items to keep (default is 30)
  569. pszJump1: LPCTSTR; // Text for HHWIN_BUTTON_JUMP1
  570. pszJump2: LPCTSTR; // Text for HHWIN_BUTTON_JUMP2
  571. pszUrlJump1: LPCTSTR; // URL for HHWIN_BUTTON_JUMP1
  572. pszUrlJump2: LPCTSTR; // URL for HHWIN_BUTTON_JUMP2
  573. rcMinSize: RECT; // Minimum size for window (ignored in version 1)
  574. cbInfoTypes: Integer; // size of paInfoTypes;
  575. {$IFDEF HTMLHELP12}
  576. pszCustomTabs: LPCTSTR; // multiple zero-terminated Strings
  577. {$ENDIF HTMLHELP12}
  578. end;
  579. {$EXTERNALSYM tagHH_WINTYPE}
  580. HH_WINTYPE = tagHH_WINTYPE;
  581. {$EXTERNALSYM HH_WINTYPE}
  582. PHH_WINTYPE = ^tagHH_WINTYPE;
  583. {$EXTERNALSYM PHH_WINTYPE}
  584. THHWinType = tagHH_WINTYPE;
  585. const
  586. HHACT_TAB_CONTENTS = 0;
  587. {$EXTERNALSYM HHACT_TAB_CONTENTS}
  588. HHACT_TAB_INDEX = 1;
  589. {$EXTERNALSYM HHACT_TAB_INDEX}
  590. HHACT_TAB_SEARCH = 2;
  591. {$EXTERNALSYM HHACT_TAB_SEARCH}
  592. HHACT_TAB_HISTORY = 3;
  593. {$EXTERNALSYM HHACT_TAB_HISTORY}
  594. HHACT_TAB_FAVORITES = 4;
  595. {$EXTERNALSYM HHACT_TAB_FAVORITES}
  596. HHACT_EXPAND = 5;
  597. {$EXTERNALSYM HHACT_EXPAND}
  598. HHACT_CONTRACT = 6;
  599. {$EXTERNALSYM HHACT_CONTRACT}
  600. HHACT_BACK = 7;
  601. {$EXTERNALSYM HHACT_BACK}
  602. HHACT_FORWARD = 8;
  603. {$EXTERNALSYM HHACT_FORWARD}
  604. HHACT_STOP = 9;
  605. {$EXTERNALSYM HHACT_STOP}
  606. HHACT_REFRESH = 10;
  607. {$EXTERNALSYM HHACT_REFRESH}
  608. HHACT_HOME = 11;
  609. {$EXTERNALSYM HHACT_HOME}
  610. HHACT_SYNC = 12;
  611. {$EXTERNALSYM HHACT_SYNC}
  612. HHACT_OPTIONS = 13;
  613. {$EXTERNALSYM HHACT_OPTIONS}
  614. HHACT_PRINT = 14;
  615. {$EXTERNALSYM HHACT_PRINT}
  616. HHACT_HIGHLIGHT = 15;
  617. {$EXTERNALSYM HHACT_HIGHLIGHT}
  618. HHACT_CUSTOMIZE = 16;
  619. {$EXTERNALSYM HHACT_CUSTOMIZE}
  620. HHACT_JUMP1 = 17;
  621. {$EXTERNALSYM HHACT_JUMP1}
  622. HHACT_JUMP2 = 18;
  623. {$EXTERNALSYM HHACT_JUMP2}
  624. HHACT_ZOOM = 19;
  625. {$EXTERNALSYM HHACT_ZOOM}
  626. HHACT_TOC_NEXT = 20;
  627. {$EXTERNALSYM HHACT_TOC_NEXT}
  628. HHACT_TOC_PREV = 21;
  629. {$EXTERNALSYM HHACT_TOC_PREV}
  630. HHACT_NOTES = 22;
  631. {$EXTERNALSYM HHACT_NOTES}
  632. HHACT_LAST_ENUM = 23;
  633. {$EXTERNALSYM HHACT_LAST_ENUM}
  634. type
  635. PHHNTrack = ^THHNTrack;
  636. tagHHNTRACK = packed record
  637. hdr: NMHDR;
  638. pszCurUrl: PCSTR; // Multi-byte, null-terminated string
  639. idAction: Integer; // HHACT_ value
  640. phhWinType: PHHWinType; // Current window type structure
  641. end;
  642. {$EXTERNALSYM tagHHNTRACK}
  643. HHNTRACK = tagHHNTRACK;
  644. {$EXTERNALSYM HHNTRACK}
  645. THHNTrack = tagHHNTRACK;
  646. function HtmlHelpA(hwndCaller: HWND; pszFile: LPCSTR; uCommand: UINT; dwData: DWORD_PTR): HWND; stdcall;
  647. {$EXTERNALSYM HtmlHelpA}
  648. function HtmlHelpW(hwndCaller: HWND; pszFile: LPCWSTR; uCommand: UINT; dwData: DWORD_PTR): HWND; stdcall;
  649. {$EXTERNALSYM HtmlHelpW}
  650. function HtmlHelp(hwndCaller: HWND; pszFile: LPCTSTR; uCommand: UINT; dwData: DWORD_PTR): HWND; stdcall;
  651. // Use the following for GetProcAddress to load from hhctrl.ocx
  652. const
  653. ATOM_HTMLHELP_API_ANSI = LPTSTR(DWORD(WORD(14)));
  654. {$EXTERNALSYM ATOM_HTMLHELP_API_ANSI}
  655. ATOM_HTMLHELP_API_UNICODE = LPTSTR(DWORD(WORD(15)));
  656. {$EXTERNALSYM ATOM_HTMLHELP_API_UNICODE}
  657. {$IFDEF HTMLHELP12}
  658. // Global Control Properties
  659. const
  660. HH_GPROPID_SINGLETHREAD = 1; // VARIANT_BOOL: True for single thread
  661. {$EXTERNALSYM HH_GPROPID_SINGLETHREAD}
  662. HH_GPROPID_TOOLBAR_MARGIN = 2; // long: Provides a left/right margin around the toolbar.
  663. {$EXTERNALSYM HH_GPROPID_TOOLBAR_MARGIN}
  664. HH_GPROPID_UI_LANGUAGE = 3; // long: LangId of the UI.
  665. {$EXTERNALSYM HH_GPROPID_UI_LANGUAGE}
  666. HH_GPROPID_CURRENT_SUBSET = 4; // BSTR: Current subset.
  667. {$EXTERNALSYM HH_GPROPID_CURRENT_SUBSET}
  668. HH_GPROPID_CONTENT_LANGUAGE = 5; // long: LandId for desired content.
  669. {$EXTERNALSYM HH_GPROPID_CONTENT_LANGUAGE}
  670. type
  671. HH_GPROPID = HH_GPROPID_SINGLETHREAD..HH_GPROPID_CONTENT_LANGUAGE;
  672. {$EXTERNALSYM HH_GPROPID}
  673. THHGPropID = HH_GPROPID;
  674. // Global Property structure
  675. PHHGlobalProperty = ^THHGlobalProperty;
  676. tagHH_GLOBAL_PROPERTY = record
  677. id: THHGPropID;
  678. Dummy: Integer; // MVB: Added to enforce 8-byte packing
  679. var_: OleVariant;
  680. end;
  681. HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;
  682. THHGlobalProperty = tagHH_GLOBAL_PROPERTY;
  683. {$ENDIF HTMLHELP12}
  684. implementation
  685. {$IFDEF DYNAMIC_LINK}
  686. uses
  687. JwaWinBase, JwaWinError, JwaWinNT, JwaWinReg;
  688. {$ENDIF DYNAMIC_LINK}
  689. const
  690. {$IFDEF UNICODE}
  691. AWSuffix = 'W';
  692. {$ELSE}
  693. AWSuffix = 'A';
  694. {$ENDIF UNICODE}
  695. {$IFDEF DYNAMIC_LINK}
  696. function GetOCXPath: string;
  697. const
  698. HHPathRegKey = 'CLSID\{adb880a6-d8ff-11cf-9377-00aa003b7a11}\InprocServer32';
  699. var
  700. HHKey: HKEY;
  701. R, PathSize, ValueType: DWORD;
  702. Path: string;
  703. begin
  704. R := ERROR_PATH_NOT_FOUND;
  705. if RegOpenKeyExA(HKEY_CLASSES_ROOT, PChar(HHPathRegKey), 0, KEY_QUERY_VALUE, HHKey) = ERROR_SUCCESS then
  706. begin
  707. ValueType := 0;
  708. PathSize := 0;
  709. if RegQueryValueExA(HHKey, PChar(''), nil, @ValueType, nil, @PathSize) = ERROR_SUCCESS then
  710. begin
  711. if ValueType = REG_SZ then
  712. begin
  713. SetLength(Path, PathSize);
  714. R := RegQueryValueExA(HHKey, PChar(''), nil, @ValueType, PByte(Path), @PathSize);
  715. Result := PChar(Path);
  716. end;
  717. end;
  718. RegCloseKey(HHKey);
  719. end;
  720. if R <> ERROR_SUCCESS then
  721. Result := 'hhctrl.ocx';
  722. end;
  723. var
  724. _HtmlHelpA: Pointer;
  725. _HtmlHelpW: Pointer;
  726. _HtmlHelp: Pointer;
  727. function HtmlHelpA;
  728. begin
  729. GetProcedureAddress(_HtmlHelpA, GetOCXPath, 'HtmlHelpA');
  730. asm
  731. MOV ESP, EBP
  732. POP EBP
  733. JMP [_HtmlHelpA]
  734. end;
  735. end;
  736. function HtmlHelpW;
  737. begin
  738. GetProcedureAddress(_HtmlHelpW, GetOCXPath, 'HtmlHelpW');
  739. asm
  740. MOV ESP, EBP
  741. POP EBP
  742. JMP [_HtmlHelpW]
  743. end;
  744. end;
  745. function HtmlHelp;
  746. begin
  747. GetProcedureAddress(_HtmlHelp, GetOCXPath, 'HtmlHelp' + AWSuffix);
  748. asm
  749. MOV ESP, EBP
  750. POP EBP
  751. JMP [_HtmlHelp]
  752. end;
  753. end;
  754. {$ELSE}
  755. const
  756. hhctrl = 'hhctrl.ocx';
  757. function HtmlHelpA; external hhctrl name 'HtmlHelpA';
  758. function HtmlHelpW; external hhctrl name 'HtmlHelpW';
  759. function HtmlHelp; external hhctrl name 'HtmlHelp' + AWSuffix;
  760. {$ENDIF DYNAMIC_LINK}
  761. end.