jwahtmlhelp.pas 32 KB

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