1{ 2 This file is part of the Free Pascal run time library. 3 Copyright (c) 2009 by Marco van de Voort 4 member of the Free Pascal development team. 5 6 See the file COPYING.FPC, included in this distribution, 7 for details about the copyright. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 13 Original copyright statement follows. 14 15/**************************************************************************** 16* * 17* HtmlHelp.h * 18* * 19* Copyright (c) 1996-1997, Microsoft Corp. All rights reserved. * 20* * 21****************************************************************************/ 22} 23 24unit htmlhelp; 25 26interface 27{$ifdef FPC_OS_UNICODE} 28 {$define UNICODE} 29{$endif} 30 31Uses Windows; 32 33const 34// Commands to pass to HtmlHelp() 35 36 HH_DISPLAY_TOPIC = $0000; 37 HH_HELP_FINDER = $0000; // WinHelp equivalent 38 HH_DISPLAY_TOC = $0001; 39 HH_DISPLAY_INDEX = $0002; 40 HH_DISPLAY_SEARCH = $0003; 41 HH_SET_WIN_TYPE = $0004; 42 HH_GET_WIN_TYPE = $0005; 43 HH_GET_WIN_HANDLE = $0006; 44 HH_ENUM_INFO_TYPE = $0007; // Get Info type name, call repeatedly to enumerate, -1 at end 45 HH_SET_INFO_TYPE = $0008; // Add Info type to filter. 46 HH_SYNC = $0009; 47 HH_RESERVED1 = $000A; 48 HH_RESERVED2 = $000B; 49 HH_RESERVED3 = $000C; 50 HH_KEYWORD_LOOKUP = $000D; 51 HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup window 52 HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData 53 HH_TP_HELP_CONTEXTMENU = $0010; // text popup help, same as WinHelp HELP_CONTEXTlMENU 54 HH_TP_HELP_WM_HELP = $0011; // text popup help, same as WinHelp HELP_WM_HELP 55 HH_CLOSE_ALL = $0012; // close all windows opened directly or indirectly by the caller 56 HH_ALINK_LOOKUP = $0013; // ALink version of HH_KEYWORD_LOOKUP 57 HH_GET_LAST_ERROR = $0014; // not currently implemented // See HHERROR.h 58 HH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at end 59 HH_ENUM_CATEGORY_IT = $0016; // Get category info type members, call repeatedly to enumerate, -1 at end 60 HH_RESET_IT_FILTER = $0017; // Clear the info type filter of all info types. 61 HH_SET_INCLUSIVE_FILTER = $0018; // set inclusive filtering method for untyped topics to be included in display 62 HH_SET_EXCLUSIVE_FILTER = $0019; // set exclusive filtering method for untyped topics to be excluded from display 63 HH_INITIALIZE = $001C; // Initializes the help system. 64 HH_UNINITIALIZE = $001D; // Uninitializes the help system. 65 HH_SET_QUERYSERVICE = $001E; // Set the Host IQueryService interface 66 HH_PRETRANSLATEMESSAGE = $00fd; // Pumps messages. (NULL, NULL, MSG*). 67 HH_SET_GLOBAL_PROPERTY = $00fc; // Set a global property. (NULL, NULL, HH_GPROP) 68 HH_SAFE_DISPLAY_TOPIC = $0020; // private addition to the interface for InternetExplorer. 69 70 HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0); // Automatically hide/show tri-pane window 71 HHWIN_PROP_ONTOP = (1 shl 1); // Top-most window 72 HHWIN_PROP_NOTITLEBAR = (1 shl 2); // no title bar 73 HHWIN_PROP_NODEF_STYLES = (1 shl 3); // no default window styles (only HH_WINTYPE.dwStyles) 74 HHWIN_PROP_NODEF_EXSTYLES = (1 shl 4); // no default extended window styles (only HH_WINTYPE.dwExStyles) 75 HHWIN_PROP_TRI_PANE = (1 shl 5); // use a tri-pane window 76 HHWIN_PROP_NOTB_TEXT = (1 shl 6); // no text on toolbar buttons 77 HHWIN_PROP_POST_QUIT = (1 shl 7); // post WM_QUIT message when window closes 78 HHWIN_PROP_AUTO_SYNC = (1 shl 8); // automatically ssync contents and index 79 HHWIN_PROP_TRACKING = (1 shl 9); // send tracking notification messages 80 HHWIN_PROP_TAB_SEARCH = (1 shl 10); // include search tab in navigation pane 81 HHWIN_PROP_TAB_HISTORY = (1 shl 11); // include history tab in navigation pane 82 HHWIN_PROP_TAB_FAVORITES = (1 shl 12); // include favorites tab in navigation pane 83 HHWIN_PROP_CHANGE_TITLE = (1 shl 13); // Put current HTML title in title bar 84 HHWIN_PROP_NAV_ONLY_WIN = (1 shl 14); // Only display the navigation window 85 HHWIN_PROP_NO_TOOLBAR = (1 shl 15); // Don't display a toolbar 86 HHWIN_PROP_MENU = (1 shl 16); // Menu 87 HHWIN_PROP_TAB_ADVSEARCH = (1 shl 17); // Advanced FTS UI. 88 HHWIN_PROP_USER_POS = (1 shl 18); // After initial creation, user controls window size/position 89 HHWIN_PROP_TAB_CUSTOM1 = (1 shl 19); // Use custom tab #1 90 HHWIN_PROP_TAB_CUSTOM2 = (1 shl 20); // Use custom tab #2 91 HHWIN_PROP_TAB_CUSTOM3 = (1 shl 21); // Use custom tab #3 92 HHWIN_PROP_TAB_CUSTOM4 = (1 shl 22); // Use custom tab #4 93 HHWIN_PROP_TAB_CUSTOM5 = (1 shl 23); // Use custom tab #5 94 HHWIN_PROP_TAB_CUSTOM6 = (1 shl 24); // Use custom tab #6 95 HHWIN_PROP_TAB_CUSTOM7 = (1 shl 25); // Use custom tab #7 96 HHWIN_PROP_TAB_CUSTOM8 = (1 shl 26); // Use custom tab #8 97 HHWIN_PROP_TAB_CUSTOM9 = (1 shl 27); // Use custom tab #9 98 HHWIN_TB_MARGIN = (1 shl 28); // the window type has a margin 99 100 HHWIN_PARAM_PROPERTIES = (1 shl 1); // valid fsWinProperties 101 HHWIN_PARAM_STYLES = (1 shl 2); // valid dwStyles 102 HHWIN_PARAM_EXSTYLES = (1 shl 3); // valid dwExStyles 103 HHWIN_PARAM_RECT = (1 shl 4); // valid rcWindowPos 104 HHWIN_PARAM_NAV_WIDTH = (1 shl 5); // valid iNavWidth 105 HHWIN_PARAM_SHOWSTATE = (1 shl 6); // valid nShowState 106 HHWIN_PARAM_INFOTYPES = (1 shl 7); // valid apInfoTypes 107 HHWIN_PARAM_TB_FLAGS = (1 shl 8); // valid fsToolBarFlags 108 HHWIN_PARAM_EXPANSION = (1 shl 9); // valid fNotExpanded 109 HHWIN_PARAM_TABPOS = (1 shl 10); // valid tabpos 110 HHWIN_PARAM_TABORDER = (1 shl 11); // valid taborder 111 HHWIN_PARAM_HISTORY_COUNT = (1 shl 12); // valid cHistory 112 HHWIN_PARAM_CUR_TAB = (1 shl 13); // valid curNavType 113 114 HHWIN_BUTTON_EXPAND = (1 shl 1); // Expand/contract button 115 HHWIN_BUTTON_BACK = (1 shl 2); // Back button 116 HHWIN_BUTTON_FORWARD = (1 shl 3); // Forward button 117 HHWIN_BUTTON_STOP = (1 shl 4); // Stop button 118 HHWIN_BUTTON_REFRESH = (1 shl 5); // Refresh button 119 HHWIN_BUTTON_HOME = (1 shl 6); // Home button 120 HHWIN_BUTTON_BROWSE_FWD = (1 shl 7); // not implemented 121 HHWIN_BUTTON_BROWSE_BCK = (1 shl 8); // not implemented 122 HHWIN_BUTTON_NOTES = (1 shl 9); // not implemented 123 HHWIN_BUTTON_CONTENTS = (1 shl 10); // not implemented 124 HHWIN_BUTTON_SYNC = (1 shl 11); // Sync button 125 HHWIN_BUTTON_OPTIONS = (1 shl 12); // Options button 126 HHWIN_BUTTON_PRINT = (1 shl 13); // Print button 127 HHWIN_BUTTON_INDEX = (1 shl 14); // not implemented 128 HHWIN_BUTTON_SEARCH = (1 shl 15); // not implemented 129 HHWIN_BUTTON_HISTORY = (1 shl 16); // not implemented 130 HHWIN_BUTTON_FAVORITES = (1 shl 17); // not implemented 131 HHWIN_BUTTON_JUMP1 = (1 shl 18); 132 HHWIN_BUTTON_JUMP2 = (1 shl 19); 133 HHWIN_BUTTON_ZOOM = (1 shl 20); 134 HHWIN_BUTTON_TOC_NEXT = (1 shl 21); 135 HHWIN_BUTTON_TOC_PREV = (1 shl 22); 136 137 138// Button IDs 139 140 IDTB_EXPAND = 200; 141 IDTB_CONTRACT = 201; 142 IDTB_STOP = 202; 143 IDTB_REFRESH = 203; 144 IDTB_BACK = 204; 145 IDTB_HOME = 205; 146 IDTB_SYNC = 206; 147 IDTB_PRINT = 207; 148 IDTB_OPTIONS = 208; 149 IDTB_FORWARD = 209; 150 IDTB_NOTES = 210; // not implemented 151 IDTB_BROWSE_FWD = 211; 152 IDTB_BROWSE_BACK = 212; 153 IDTB_CONTENTS = 213; // not implemented 154 IDTB_INDEX = 214; // not implemented 155 IDTB_SEARCH = 215; // not implemented 156 IDTB_HISTORY = 216; // not implemented 157 IDTB_FAVORITES = 217; // not implemented 158 IDTB_JUMP1 = 218; 159 IDTB_JUMP2 = 219; 160 IDTB_CUSTOMIZE = 221; 161 IDTB_ZOOM = 222; 162 IDTB_TOC_NEXT = 223; 163 IDTB_TOC_PREV = 224; 164 165// Notification codes 166 167 HHN_FIRST = longword (0)-longword(860); // (0U-860U) 168 HHN_LAST = longword (0)-longword(879); // (0U-879U) 169 170 HHN_NAVCOMPLETE = (HHN_FIRST-0); 171 HHN_TRACK = (HHN_FIRST-1); 172 HHN_WINDOW_CREATE = (HHN_FIRST-2); 173 174 HHWIN_DEF_BUTTONS = (HHWIN_BUTTON_EXPAND or 175 HHWIN_BUTTON_BACK or 176 HHWIN_BUTTON_OPTIONS or 177 HHWIN_BUTTON_PRINT); 178 179 HHWIN_NAVTYPE_TOC = 0; 180 HHWIN_NAVTYPE_INDEX = 1; 181 HHWIN_NAVTYPE_SEARCH = 2; 182 HHWIN_NAVTYPE_FAVORITES = 3; 183 HHWIN_NAVTYPE_HISTORY = 4; // not implemented 184 HHWIN_NAVTYPE_AUTHOR = 5; 185 HHWIN_NAVTYPE_CUSTOM_FIRST = 11; 186 IT_INCLUSIVE = 0; 187 IT_EXCLUSIVE = 1; 188 IT_HIDDEN = 2; 189 190 HHWIN_NAVTAB_TOP = 0; 191 HHWIN_NAVTAB_LEFT = 1; 192 HHWIN_NAVTAB_BOTTOM = 2; 193 194 HH_MAX_TABS = 19; // maximum number of tabs 195 196 HH_TAB_CONTENTS = 0; 197 HH_TAB_INDEX = 1; 198 HH_TAB_SEARCH = 2; 199 HH_TAB_FAVORITES = 3; 200 HH_TAB_HISTORY = 4; 201 HH_TAB_AUTHOR = 5; 202 203 HH_TAB_CUSTOM_FIRST = 11; 204 HH_TAB_CUSTOM_LAST = HH_MAX_TABS; 205 206 HH_MAX_TABS_CUSTOM = (HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1); 207 208// HH_DISPLAY_SEARCH Command Related Structures and Constants 209 210 HH_FTS_DEFAULT_PROXIMITY = (-1); 211 212 HHACT_TAB_CONTENTS = 0; 213 HHACT_TAB_INDEX = 1; 214 HHACT_TAB_SEARCH = 2; 215 HHACT_TAB_HISTORY = 3; 216 HHACT_TAB_FAVORITES = 4; 217 218 HHACT_EXPAND = 5; 219 HHACT_CONTRACT = 6; 220 HHACT_BACK = 7; 221 HHACT_FORWARD = 8; 222 HHACT_STOP = 9; 223 HHACT_REFRESH = 10; 224 HHACT_HOME = 11; 225 HHACT_SYNC = 12; 226 HHACT_OPTIONS = 13; 227 HHACT_PRINT = 14; 228 HHACT_HIGHLIGHT = 15; 229 HHACT_CUSTOMIZE = 16; 230 HHACT_JUMP1 = 17; 231 HHACT_JUMP2 = 18; 232 HHACT_ZOOM = 19; 233 HHACT_TOC_NEXT = 20; 234 HHACT_TOC_PREV = 21; 235 HHACT_NOTES = 22; 236 237 HHACT_LAST_ENUM = 23; 238 239 const 240 External_library='hhctrl.ocx'; {Setup as you need} 241 242 { Pointers to basic pascal types, inserted by h2pas conversion program.} 243 244Type 245 246 PtagHHN_NOTIFY = ^tagHHN_NOTIFY; 247 tagHHN_NOTIFY = packed record 248 hdr : NMHDR; 249 pszUrl : PCSTR; { Multi-byte, null-terminated string } 250 end; 251 HHN_NOTIFY = tagHHN_NOTIFY; 252 PHHN_NOTIFY = ^HHN_NOTIFY; 253 254 PtagHH_POPUP = ^tagHH_POPUP; 255 tagHH_POPUP = packed record 256 cbStruct : longint; { sizeof this structure } 257 hinst : HINST {ANCE}; { instance handle for string resource } 258 idString : UINT; { string resource id, or text id if pszFile is specified in HtmlHelp call } 259 pszText : LPCTSTR; { used if idString is zero } 260 pt : POINT; { top center of popup window } 261 clrForeground : COLORREF; { use -1 for default } 262 clrBackground : COLORREF; { use -1 for default } 263 rcMargins : RECT; { amount of space between edges of window and text, -1 for each member to ignore } 264 pszFont : LPCTSTR; { facename, point size, char set, BOLD ITALIC UNDERLINE } 265 end; 266 HH_POPUP = tagHH_POPUP; 267 PHH_POPUP = ^HH_POPUP; 268 269 PtagHH_AKLINK = ^tagHH_AKLINK; 270 tagHH_AKLINK = packed record 271 cbStruct : longint; { sizeof this structure } 272 fReserved : BOOL; { must be FALSE (really!) } 273 pszKeywords : LPCTSTR; { semi-colon separated keywords } 274 pszUrl : LPCTSTR; { URL to jump to if no keywords found (may be NULL) } 275 pszMsgText : LPCTSTR; { Message text to display in MessageBox if pszUrl is NULL and no keyword match } 276 pszMsgTitle : LPCTSTR; { Message text to display in MessageBox if pszUrl is NULL and no keyword match } 277 pszWindow : LPCTSTR; { Window to display URL in } 278 fIndexOnFail : BOOL; { Displays index if keyword lookup fails. } 279 end; 280 HH_AKLINK = tagHH_AKLINK; 281 PHH_AKLINK = ^HH_AKLINK; 282 283 PtagHH_ENUM_IT = ^tagHH_ENUM_IT; 284 tagHH_ENUM_IT = packed record 285 cbStruct : longint; { size of this structure } 286 iType : longint; { the type of the information type ie. Inclusive, Exclusive, or Hidden } 287 pszCatName : LPCSTR; { Set to the name of the Category to enumerate the info types in a category; else NULL } 288 pszITName : LPCSTR; { volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing } 289 pszITDescription : LPCSTR; { volitile pointer to the description of the infotype. } 290 end; 291 HH_ENUM_IT = tagHH_ENUM_IT; 292 PHH_ENUM_IT = PtagHH_ENUM_IT; 293 PPHH_ENUM_IT = ^PHH_ENUM_IT; 294 295 PtagHH_ENUM_CAT = ^tagHH_ENUM_CAT; 296 tagHH_ENUM_CAT = packed record 297 cbStruct : longint; { size of this structure } 298 pszCatName : LPCSTR; { volitile pointer to the category name } 299 pszCatDescription : LPCSTR; { volitile pointer to the category description } 300 end; 301 HH_ENUM_CAT = tagHH_ENUM_CAT; 302 PHH_ENUM_CAT = PtagHH_ENUM_CAT; 303 PPHH_ENUM_CAT = ^PHH_ENUM_CAT; 304 305 PtagHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE; 306 tagHH_SET_INFOTYPE = packed record 307 cbStruct : longint; { the size of this structure } 308 pszCatName : LPCSTR; { the name of the category, if any, the InfoType is a member of. } 309 pszInfoTypeName : LPCSTR; { the name of the info type to add to the filter } 310 end; 311 HH_SET_INFOTYPE = tagHH_SET_INFOTYPE; 312 PHH_SET_INFOTYPE = PtagHH_SET_INFOTYPE; 313 PPHH_SET_INFOTYPE = ^PHH_SET_INFOTYPE; 314 315 HH_INFOTYPE = DWORD; 316 PPHH_INFOTYPE = ^PHH_INFOTYPE; 317 PHH_INFOTYPE = HH_INFOTYPE; 318 319 PtagHH_FTS_QUERY = ^tagHH_FTS_QUERY; 320 tagHH_FTS_QUERY = packed record 321 cbStruct : longint; { Sizeof structure in bytes. } 322 fUniCodeStrings : BOOL; { TRUE if all strings are unicode. } 323 pszSearchQuery : LPCTSTR; { String containing the search query. } 324 iProximity : LONG; { Word proximity. } 325 fStemmedSearch : BOOL; { TRUE for StemmedSearch only. } 326 fTitleOnly : BOOL; { TRUE for Title search only. } 327 fExecute : BOOL; { TRUE to initiate the search. } 328 pszWindow : LPCTSTR; { Window to display in } 329 end; 330 HH_FTS_QUERY = tagHH_FTS_QUERY; 331 PHH_FTS_QUERY = ^HH_FTS_QUERY; 332 333 PtagHH_WINTYPE = ^tagHH_WINTYPE; 334 tagHH_WINTYPE = packed record { HH_WINTYPE Structure } 335 cbStruct : longint; { IN: size of this structure including all Information Types } 336 fUniCodeStrings : BOOL; { IN/OUT: TRUE if all strings are in UNICODE } 337 pszType : LPCTSTR; { IN/OUT: Name of a type of window } 338 fsValidMembers : DWORD; { IN: Bit flag of valid members (HHWIN_PARAM_) } 339 fsWinProperties : DWORD; { IN/OUT: Properties/attributes of the window (HHWIN_) } 340 pszCaption : LPCTSTR; { IN/OUT: Window title } 341 dwStyles : DWORD; { IN/OUT: Window styles } 342 dwExStyles : DWORD; { IN/OUT: Extended Window styles } 343 rcWindowPos : RECT; { IN: Starting position, OUT: current position } 344 nShowState : longint; { IN: show state (e.g., SW_SHOW) } 345 hwndHelp : HWND; { OUT: window handle } 346 hwndCaller : HWND; { OUT: who called this window } 347 paInfoTypes : PHH_INFOTYPE; { IN: Pointer to an array of Information Types } 348 { The following members are only valid if HHWIN_PROP_TRI_PANE is set } 349 hwndToolBar : HWND; { OUT: toolbar window in tri-pane window } 350 hwndNavigation : HWND; { OUT: navigation window in tri-pane window } 351 hwndHTML : HWND; { OUT: window displaying HTML in tri-pane window } 352 iNavWidth : longint; { IN/OUT: width of navigation window } 353 rcHTML : RECT; { OUT: HTML window coordinates } 354 pszToc : LPCTSTR; { IN: Location of the table of contents file } 355 pszIndex : LPCTSTR; { IN: Location of the index file } 356 pszFile : LPCTSTR; { IN: Default location of the html file } 357 pszHome : LPCTSTR; { IN/OUT: html file to display when Home button is clicked } 358 fsToolBarFlags : DWORD; { IN: flags controling the appearance of the toolbar } 359 fNotExpanded : BOOL; { IN: TRUE/FALSE to contract or expand, OUT: current state } 360 curNavType : longint; { IN/OUT: UI to display in the navigational pane } 361 tabpos : longint; { IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM } 362 idNotify : longint; { IN: ID to use for WM_NOTIFY messages } 363 tabOrder : array[0..(HH_MAX_TABS+1)-1] of BYTE; { IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs } 364 cHistory : longint; { IN/OUT: number of history items to keep (default is 30) } 365 pszJump1 : LPCTSTR; { Text for HHWIN_BUTTON_JUMP1 } 366 pszJump2 : LPCTSTR; { Text for HHWIN_BUTTON_JUMP2 } 367 pszUrlJump1 : LPCTSTR; { URL for HHWIN_BUTTON_JUMP1 } 368 pszUrlJump2 : LPCTSTR; { URL for HHWIN_BUTTON_JUMP2 } 369 rcMinSize : RECT; { Minimum size for window (ignored in version 1) } 370 cbInfoTypes : longint; { size of paInfoTypes; } 371 pszCustomTabs : LPCTSTR; { multiple zero-terminated strings } 372 end; 373 HH_WINTYPE = tagHH_WINTYPE; 374 PHH_WINTYPE = PtagHH_WINTYPE; 375 PPHH_WINTYPE = ^PHH_WINTYPE; 376 377 PtagHHNTRACK = ^tagHHNTRACK; 378 tagHHNTRACK = packed record 379 hdr : NMHDR; 380 pszCurUrl : PCSTR; { Multi-byte, null-terminated string } 381 idAction : longint; { HHACT_ value } 382 phhWinType : PHH_WINTYPE; { Current window type structure } 383 end; 384 HHNTRACK = tagHHNTRACK; 385 PHHNTRACK = ^HHNTRACK; 386 387 function HtmlHelpA(hwndCaller:HWND; pszFile:LPCSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpA'; 388 function HtmlHelpW(hwndCaller:HWND; pszFile:LPCWSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpW'; 389 {$ifdef Unicode} 390 function HtmlHelp(hwndCaller:HWND; pszFile:LPCWSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpW'; 391 {$else} 392 function HtmlHelp(hwndCaller:HWND; pszFile:LPCSTR; uCommand:UINT; dwData:DWORD_PTR):HWND;stdcall;external External_library name 'HtmlHelpA'; 393 {$endif} 394 395type HH_GPROPID = ( 396 397 HH_GPROPID_SINGLETHREAD=1, // VARIANT_BOOL: True for single thread 398 HH_GPROPID_TOOLBAR_MARGIN=2, // long: Provides a left/right margin around the toolbar. 399 HH_GPROPID_UI_LANGUAGE=3, // long: LangId of the UI. 400 HH_GPROPID_CURRENT_SUBSET=4, // BSTR: Current subset. 401 HH_GPROPID_CONTENT_LANGUAGE=5 // long: LandId for desired content. 402 ); 403 404 {$packrecords 8} 405 406 type 407 PtagHH_GLOBAL_PROPERTY = ^tagHH_GLOBAL_PROPERTY; 408 tagHH_GLOBAL_PROPERTY = packed record 409 id : HH_GPROPID; 410 _var : VARIANT; 411 end; 412 HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY; 413 PHH_GLOBAL_PROPERTY = ^HH_GLOBAL_PROPERTY; 414 415implementation 416 417end. 418