怎样在程序中调用.chm帮助文件? 用ShellExecute。不过好象Delphi不直接支持按F1打开相关帮助。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实在控件的ONHELP中写代码通过ISHELL接口(MSDN中有介绍)实现按F1打开相关帮助 这样用不对嘛?handle:=findwindow('TFormmain', Nil); // handle 返回非0值shellexecute(handle, Nil, 'help.chm', Nil, '.\', SW_SHOWNORMAL);// help.chm与主程序在同一目录下 htmlhelp这个api在D5中的那个单元中? C++:HtmlHelpA(HWND hwndCaller,LPCSTR pszFile,UINT uCommand,DWORD_PTR dwData);Delphi可以实现直接调用C/C++的API函数,但首先必须进行声明。 unit MyHTML;interfaceusesWindows;const// Commands to pass to HtmlHelp()HH_DISPLAY_TOPIC = $0000;HH_HELP_FINDER = $0000; // WinHelp equivalentHH_DISPLAY_TOC = $0001; // not currently implementedHH_DISPLAY_INDEX = $0002; // not currently implementedHH_DISPLAY_SEARCH = $0003; // not currently implementedHH_SET_WIN_TYPE = $0004;HH_GET_WIN_TYPE = $0005;HH_GET_WIN_HANDLE = $0006;HH_ENUM_INFO_TYPE = $0007; // Get Info type name, call repeatedly to enumerate, -1 at endHH_SET_INFO_TYPE = $0008; // Add Info type to filter.HH_SYNC = $0009;HH_RESERVED1 = $000A;HH_RESERVED2 = $000B;HH_RESERVED3 = $000C;HH_KEYWORD_LOOKUP = $000D;HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup windowHH_HELP_CONTEXT = $000F; // display mapped numeric value in dwDataHH_TP_HELP_CONTEXTMENU = $0010; // text popup help, same as WinHelp HELP_CONTEXTMENUHH_TP_HELP_WM_HELP = $0011; // text popup help, same as WinHelp HELP_WM_HELPHH_CLOSE_ALL = $0012; // close all windows opened directly or indirectly by the callerHH_ALINK_LOOKUP = $0013; // ALink version of HH_KEYWORD_LOOKUPHH_GET_LAST_ERROR = $0014; // not currently implemented // See HHERROR.hHH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at endHH_ENUM_CATEGORY_IT = $0016; // Get category info type members, call repeatedly to enumerate, -1 at endHH_RESET_IT_FILTER = $0017; // Clear the info type filter of all info types.HH_SET_INCLUSIVE_FILTER = $0018; // set inclusive filtering method for untyped topics to be included in displayHH_SET_EXCLUSIVE_FILTER = $0019; // set exclusive filtering method for untyped topics to be excluded from displayHH_INITIALIZE =$001C; // Initializes the help system.HH_UNINITIALIZE =$001D; // Uninitializes the help system.HH_PRETRANSLATEMESSAGE = $00fd; // Pumps messages. (NULL, NULL, MSG*).HH_SET_GLOBAL_PROPERTY = $00fc; // Set a global property. (NULL, NULL, HH_GPROP) HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0); // Automatically hide/show tri-pane window HHWIN_PROP_ONTOP = (1 shl 1); // Top-most window HHWIN_PROP_NOTITLEBAR = (1 shl 2); // no title bar HHWIN_PROP_NODEF_STYLES = (1 shl 3); // no default window styles (only HH_WINTYPE.dwStyles) HHWIN_PROP_NODEF_EXSTYLES = (1 shl 4); // no default extended window styles (only HH_WINTYPE.dwExStyles) HHWIN_PROP_TRI_PANE = (1 shl 5); // use a tri-pane window HHWIN_PROP_NOTB_TEXT = (1 shl 6); // no text on toolbar buttons HHWIN_PROP_POST_QUIT = (1 shl 7); // post WM_QUIT message when window closes HHWIN_PROP_AUTO_SYNC = (1 shl 8); // automatically ssync contents and index HHWIN_PROP_TRACKING = (1 shl 9); // send tracking notification messages HHWIN_PROP_TAB_SEARCH = (1 shl 10); // include search tab in navigation paneHHWIN_PROP_TAB_HISTORY = (1 shl 11); // include history tab in navigation pane HHWIN_PROP_TAB_FAVORITES = (1 shl 12); // include favorites tab in navigation pane HHWIN_PROP_CHANGE_TITLE = (1 shl 13); // Put current HTML title in title bar HHWIN_PROP_NAV_ONLY_WIN = (1 shl 14); // Only display the navigation window HHWIN_PROP_NO_TOOLBAR = (1 shl 15); // Don't display a toolbar HHWIN_PROP_MENU = (1 shl 16); // Menu HHWIN_PROP_TAB_ADVSEARCH = (1 shl 17); // Advanced FTS UI. HHWIN_PROP_USER_POS = (1 shl 18); // After initial creation, user controls window size/position HHWIN_PROP_TAB_CUSTOM1 = (1 shl 19); // Use custom tab #1 HHWIN_PROP_TAB_CUSTOM2 = (1 shl 20); // Use custom tab #2 HHWIN_PROP_TAB_CUSTOM3 = (1 shl 21); // Use custom tab #3 HHWIN_PROP_TAB_CUSTOM4 = (1 shl 22); // Use custom tab #4 HHWIN_PROP_TAB_CUSTOM5 = (1 shl 23); // Use custom tab #5 HHWIN_PROP_TAB_CUSTOM6 = (1 shl 24); // Use custom tab #6 HHWIN_PROP_TAB_CUSTOM7 = (1 shl 25); // Use custom tab #7 HHWIN_PROP_TAB_CUSTOM8 = (1 shl 26); // Use custom tab #8 HHWIN_PROP_TAB_CUSTOM9 = (1 shl 27); // Use custom tab #9 HHWIN_TB_MARGIN = (1 shl 28); // the window type has a margin HHWIN_PARAM_PROPERTIES = (1 shl 1); // valid fsWinProperties HHWIN_PARAM_STYLES = (1 shl 2); // valid dwStyles HHWIN_PARAM_EXSTYLES = (1 shl 3); // valid dwExStyles HHWIN_PARAM_RECT = (1 shl 4); // valid rcWindowPos HHWIN_PARAM_NAV_WIDTH = (1 shl 5); // valid iNavWidth HHWIN_PARAM_SHOWSTATE = (1 shl 6); // valid nShowState HHWIN_PARAM_INFOTYPES = (1 shl 7); // valid apInfoTypes HHWIN_PARAM_TB_FLAGS = (1 shl 8); // valid fsToolBarFlags HHWIN_PARAM_EXPANSION = (1 shl 9); // valid fNotExpanded HHWIN_PARAM_TABPOS = (1 shl 10); // valid tabpos HHWIN_PARAM_TABORDER = (1 shl 11); // valid taborder HHWIN_PARAM_HISTORY_COUNT = (1 shl 12); // valid cHistory HHWIN_PARAM_CUR_TAB = (1 shl 13); // valid curNavType HHWIN_BUTTON_EXPAND = (1 shl 1); // Expand/contract button HHWIN_BUTTON_BACK = (1 shl 2); // Back button HHWIN_BUTTON_FORWARD = (1 shl 3); // Forward button HHWIN_BUTTON_STOP = (1 shl 4); // Stop button HHWIN_BUTTON_REFRESH = (1 shl 5); // Refresh button HHWIN_BUTTON_HOME = (1 shl 6); // Home button HHWIN_BUTTON_BROWSE_FWD = (1 shl 7); // not implemented HHWIN_BUTTON_BROWSE_BCK = (1 shl 8); // not implemented HHWIN_BUTTON_NOTES = (1 shl 9); // not implementedHHWIN_BUTTON_CONTENTS = (1 shl 10); // not implemented HHWIN_BUTTON_SYNC = (1 shl 11); // Sync button HHWIN_BUTTON_OPTIONS = (1 shl 12); // Options button HHWIN_BUTTON_PRINT = (1 shl 13); // Print button HHWIN_BUTTON_INDEX = (1 shl 14); // not implemented HHWIN_BUTTON_SEARCH = (1 shl 15); // not implemented HHWIN_BUTTON_HISTORY = (1 shl 16); // not implementedHHWIN_BUTTON_FAVORITES = (1 shl 17); // not implemented HHWIN_BUTTON_JUMP1 = (1 shl 18); HHWIN_BUTTON_JUMP2 = (1 shl 19); HHWIN_BUTTON_ZOOM = (1 shl 20); HHWIN_BUTTON_TOC_NEXT = (1 shl 21); HHWIN_BUTTON_TOC_PREV = (1 shl 22);HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPANDor HHWIN_BUTTON_BACKor HHWIN_BUTTON_OPTIONSor HHWIN_BUTTON_PRINT;// Button IDs IDTB_EXPAND = 200; IDTB_CONTRACT = 201; IDTB_STOP = 202; IDTB_REFRESH = 203; IDTB_BACK = 204; IDTB_HOME = 205; IDTB_SYNC = 206; IDTB_PRINT = 207; IDTB_OPTIONS = 208; IDTB_FORWARD = 209; IDTB_NOTES = 210; // not implemented IDTB_BROWSE_FWD = 211; IDTB_BROWSE_BACK = 212; IDTB_CONTENTS = 213; // not implemented IDTB_INDEX = 214; // not implemented IDTB_SEARCH = 215; // not implemented IDTB_HISTORY = 216; // not implemented IDTB_FAVORITES = 217; // not implemented IDTB_JUMP1 = 218; IDTB_JUMP2 = 219; IDTB_CUSTOMIZE = 221; IDTB_ZOOM = 222;IDTB_TOC_NEXT = 223;IDTB_TOC_PREV = 224;// Notification codesHHN_FIRST = (0-860);HHN_LAST = (0-879);HHN_NAVCOMPLETE = (HHN_FIRST-0);HHN_TRACK = (HHN_FIRST-1);HHN_WINDOW_CREATE =(HHN_FIRST-2);typetagHHN_NOTIFY = recordhdr : NMHDR;pszUrl: PChar; // Multi-byte, null-terminated stringend;HHN_NOTIFY = tagHHN_NOTIFY;tagHH_POPUP = recordcbStruct: integer; // sizeof this structurehinst: longint; // instance handle for string resourceidString: UINT; // string resource id, or text id if pszFile is specified in HtmlHelp callpszText: LPCTSTR; // used if idString is zeropt: TPOINT; // top center of popup windowclrForeground: COLORREF; // use -1 for defaultclrBackground: COLORREF; // use -1 for defaultrcMargins: TRECT; // amount of space between edges of window and text, -1 for each member to ignorepszFont: LPCTSTR; // facename, point size, char set, BOLD ITALIC UNDERLINEend;HH_POPUP = tagHH_POPUP;tagHH_AKLINK = recordcbStruct: integer; // sizeof this structurefReserved: BOOL; // must be FALSE (really!)pszKeywords: LPCTSTR; // semi-colon separated keywordspszUrl: LPCTSTR; // URL to jump to if no keywords found (may be NULL)pszMsgText: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword matchpszMsgTitle: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword matchpszWindow: LPCTSTR; // Window to display URL infIndexOnFail:BOOL; // Displays index if keyword lookup fails.end;HH_AKLINK = tagHH_AKLINK;constHHWIN_NAVTYPE_TOC = 0;HHWIN_NAVTYPE_INDEX = 1;HHWIN_NAVTYPE_SEARCH = 2;HHWIN_NAVTYPE_FAVORITES = 3;HHWIN_NAVTYPE_HISTORY = 4; // not implementedHHWIN_NAVTYPE_AUTHOR = 5;HHWIN_NAVTYPE_CUSTOM_FIRST = 11;IT_INCLUSIVE = 0;IT_EXCLUSIVE = 1;IT_HIDDEN = 2;typetagHH_ENUM_IT=recordcbStruct : integer; // size of this structureiType: integer; // the type of the information type ie. Inclusive, Exclusive, or HiddenpszCatName: LPCSTR; // Set to the name of the Category to enumerate the info types in a category; else NULLpszITName: LPCSTR; // volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeingpszITDescription:LPCSTR; // volitile pointer to the description of the infotype.end;HH_ENUM_IT = tagHH_ENUM_IT;PHH_ENUM_IT = ^tagHH_ENUM_IT;tagHH_ENUM_CAT = recordcbStruct: integer; // size of this structurepszCatName: LPCSTR; // volitile pointer to the category namepszCatDescription: LPCSTR; // volitile pointer to the category descriptionend;HH_ENUM_CAT = tagHH_ENUM_CAT;PHH_ENUM_CAT = ^tagHH_ENUM_CAT;tagHH_SET_INFOTYPE = recordcbStruct: integer; // the size of this structurepszCatName: LPCSTR ; // the name of the category, if any, the InfoType is a member of.pszInfoTypeName: LPCSTR ; // the name of the info type to add to the filterend;HH_SET_INFOTYPE = tagHH_SET_INFOTYPE;PHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE;HH_INFOTYPE = DWORD;PHH_INFOTYPE = ^HH_INFOTYPE;constHHWIN_NAVTAB_TOP = 0;HHWIN_NAVTAB_LEFT = 1;HHWIN_NAVTAB_BOTTOM = 2;HH_MAX_TABS = 19; // maximum number of tabsHH_TAB_CONTENTS = 0;HH_TAB_INDEX = 1;HH_TAB_SEARCH = 2;HH_TAB_FAVORITES = 3;HH_TAB_HISTORY = 4;HH_TAB_AUTHOR = 5;HH_TAB_CUSTOM_FIRST = 11;HH_TAB_CUSTOM_LAST = HH_MAX_TABS;HH_MAX_TABS_CUSTOM = HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1;// HH_DISPLAY_SEARCH Command Related Structures and ConstantsHH_FTS_DEFAULT_PROXIMITY = -1;typetagHH_FTS_QUERY=recordcbStruct: integer; // Sizeof structure in bytes.fUniCodeStrings: BOOL; // TRUE if all strings are unicode.pszSearchQuery: LPCTSTR;// String containing the search query.iProximity: LongInt; // Word proximity.fStemmedSearch: BOOL; // TRUE for StemmedSearch only.fTitleOnly: BOOL; // TRUE for Title search only.fExecute: BOOL; // TRUE to initiate the search.pszWindow: LPCTSTR;// Window to display inend;HH_FTS_QUERY = tagHH_FTS_QUERY;// HH_WINTYPE StructuretagHH_WINTYPE =recordcbStruct: integer; // IN: size of this structure including all Information TypesfUniCodeStrings: BOOL; // IN/OUT: TRUE if all strings are in UNICODEpszType: LPCTSTR; // IN/OUT: Name of a type of windowfsValidMembers: DWORD; // IN: Bit flag of valid members (HHWIN_PARAM_)fsWinProperties: DWORD; // IN/OUT: Properties/attributes of the window (HHWIN_)pszCaption: LPCTSTR; // IN/OUT: Window titledwStyles: DWORD; // IN/OUT: Window stylesdwExStyles: DWORD; // IN/OUT: Extended Window stylesrcWindowPos: TRECT; // IN: Starting position, OUT: current positionnShowState: integer; // IN: show state (e.g., SW_SHOW)hwndHelp: HWND; // OUT: window handlehwndCaller: HWND; // OUT: who called this windowpaInfoTypes: ^HH_INFOTYPE; // IN: Pointer to an array of Information Types// The following members are only valid if HHWIN_PROP_TRI_PANE is sethwndToolBar: HWND; // OUT: toolbar window in tri-pane windowhwndNavigation: HWND; // OUT: navigation window in tri-pane windowhwndHTML: HWND; // OUT: window displaying HTML in tri-pane windowiNavWidth: integer; // IN/OUT: width of navigation windowrcHTML: TRECT; // OUT: HTML window coordinatespszToc: LPCTSTR; // IN: Location of the table of contents filepszIndex: LPCTSTR; // IN: Location of the index filepszFile: LPCTSTR; // IN: Default location of the html filepszHome: LPCTSTR; // IN/OUT: html file to display when Home button is clickedfsToolBarFlags: DWORD; // IN: flags controling the appearance of the toolbarfNotExpanded: BOOL; // IN: TRUE/FALSE to contract or expand, OUT: current statecurNavType: integer; // IN/OUT: UI to display in the navigational panetabpos: integer; // IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOMidNotify: integer; // IN: ID to use for WM_NOTIFY messagestabOrder: array[0..HH_MAX_TABS]of BYTE; // IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabscHistory: integer; // IN/OUT: number of history items to keep (default is 30)pszJump1: LPCTSTR; // Text for HHWIN_BUTTON_JUMP1pszJump2: LPCTSTR; // Text for HHWIN_BUTTON_JUMP2pszUrlJump1: LPCTSTR; // URL for HHWIN_BUTTON_JUMP1pszUrlJump2: LPCTSTR; // URL for HHWIN_BUTTON_JUMP2rcMinSize: TRECT; // Minimum size for window (ignored in version 1)cbInfoTypes: integer; // size of paInfoTypes:pszCustomTabs: LPCTSTR; // multiple zero-terminated stringsend;HH_WINTYPE = tagHH_WINTYPE;PHH_WINTYPE = ^tagHH_WINTYPE;THHACT = ( HHACT_TAB_CONTENTS, HHACT_TAB_INDEX, HHACT_TAB_SEARCH, HHACT_TAB_HISTORY, HHACT_TAB_FAVORITES, HHACT_EXPAND, HHACT_CONTRACT, HHACT_BACK, HHACT_FORWARD, HHACT_STOP, HHACT_REFRESH, HHACT_HOME, HHACT_SYNC, HHACT_OPTIONS, HHACT_PRINT, HHACT_HIGHLIGHT, HHACT_CUSTOMIZE, HHACT_JUMP1, HHACT_JUMP2, HHACT_ZOOM, HHACT_TOC_NEXT,HHACT_TOC_PREV,HHACT_NOTES,HHACT_LAST_ENUM);tagHHNTRACK=recordhdr: NMHDR;pszCurUrl: PChar; // Multi-byte, null-terminated stringidAction: integer; // HHACT_ valuephhWinType: ^HH_WINTYPE; // Current window type structureend;HHNTRACK = tagHHNTRACK;const// Use the following for GetProcAddress to load from hhctrl.ocx ATOM_HTMLHELP_API_ANSI = PChar(DWORD(WORD(14))); ATOM_HTMLHELP_API_UNICODE = PChar(DWORD(WORD(15)));/////////////////////////////////////////////////////////////////////////////////// Global Control Properties.//// tagHH_GPROPID = (const HH_GPROPID_SINGLETHREAD =1; // VARIANT_BOOL: True for single thread HH_GPROPID_TOOLBAR_MARGIN =2; // long: Provides a left/right margin around the toolbar. HH_GPROPID_UI_LANGUAGE =3; // long: LangId of the UI. HH_GPROPID_CURRENT_SUBSET =4; // BSTR: Current subset. HH_GPROPID_CONTENT_LANGUAGE =5; // long: LandId for desired content.// );// HH_GPROPID = tagHH_GPROPID;typeHH_GPROPID = integer;/////////////////////////////////////////////////////////////////////////////////// Global Property structure//tagHH_GLOBAL_PROPERTY=recordid: HH_GPROPID;vari: Variant;end;HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;DWORD_PTR = ^DWORD;THTMLHelpA = function (hwndCaller: HWND; pszFile: LPCSTR;uCommand:DWORD; dwData: DWORD): HWND; stdcall;THtmlHelpW = function (hwndCaller: HWND; pszFile: PWideChar;uCommand:DWORD; dwData: DWORD): HWND; stdcall;{$IFDEF UNICODE}THTMLHelp = THTMLHelpW;{$ELSE}THTMLHelp = THTMLHelpA;{$ENDIF}function HTMLHelpA(hwndCaller: HWND; pszFile: LPCSTR;uCommand: DWORD; dwData: DWORD): HWND; stdcall;function HtmlHelpW(hwndCaller: HWND; pszFile: PWideChar;uCommand: DWORD; dwData: DWORD): HWND; stdcall;{$IFDEF UNICODE}function HtmlHelp(hwndCaller: HWND; pszFile: PWideChar;uCommand: DWORD; dwData: DWORD): HWND; stdcall;{$ELSE}function HTMLHelp(hwndCaller: HWND; pszFile: LPCSTR;uCommand: DWORD; dwData: DWORD): HWND; stdcall;{$ENDIF}function HTMLHelpOK: Boolean;implementationvarhHHCtrlLib: THandle;pHTMLHelpA: THTMLHelpA;pHTMLHelpW: THTMLHelpW;pHTMLHelp : THTMLHelp;function HTMLHelpOK: Boolean;beginResult := hHHCtrlLib <> 0;end;function HTMLHelpA(hwndCaller:HWND; pszFile: LPCSTR;uCommand:DWORD; dwData: DWORD):HWND;beginif Assigned(pHTMLHelpA) thenResult := pHTMLHelpA(hwndCaller, pszFile, uCommand, dwData)elseResult := 0;end;function HtmlHelpW(hwndCaller : HWND; pszFile: PWideChar;uCommand: DWORD; dwData : DWORD) : HWND;beginif Assigned(pHTMLHelpW) thenResult := pHTMLHelpW(hwndCaller, pszFile, uCommand, dwData)elseResult := 0;end;{$IFDEF UNICODE}function HtmlHelp(hwndCaller : HWND; pszFile: PWideChar;uCommand: DWORD; dwData : DWORD) : HWND;{$ELSE}function HTMLHelp(hwndCaller:HWND; pszFile: LPCSTR;uCommand:DWORD; dwData: DWORD):HWND;{$ENDIF}beginif Assigned(pHTMLHelp) thenResult := pHTMLHelp(hwndCaller, pszFile, uCommand, dwData)elseResult := 0;end;initializationbeginhHHCtrlLib := LoadLibrary('HHCtrl.ocx');if HTMLHelpOK then beginpHTMLHelpA := GetProcAddress(hHHCtrlLib, 'HtmlHelpA');pHTMLHelpW := GetProcAddress(hHHCtrlLib, 'HtmlHelpW');{$IFDEF UNICODE}pHtmlHelp := pHTMLHelpW;{$ELSE}pHtmlHelp := pHTMLHelpA;{$ENDIF}end;end;finalizationbeginif HTMLHelpOK then FreeLibrary(hHHCtrlLib);end;end.把这个单元加入你正使用的单元。然后用 ss:='E:\MYDOC\chmHelp\second.chm'+'::/JDataStore问题.htm'; HtmlHelpW(self.handle,pwidechar(ss),HH_DISPLAY_TOPIC,0);可以跳到你要的主题 程序打包 双缓冲和透明拷贝问题,请大虾赐教! 制作自动升级的功能 dephi操作word?高手解难 如何在一个edit里面显示系统当前时间呀?一经解决马上给分! 第三方控件!! 谁能帮我注释一下这行代码? 分辨率大小对窗体的影响 如何判断窗口是否已经创建 我想用delphi包一个现有的activex控件,做应用服务器,再写一个客户端使用该服务器程序,要求支持多线程,请问该如何做? 关于关闭FORM,很简单! 十万火急:在corba三层模式下,如何从客户端更新Oracle 中的long raw数据类型??
handle:=findwindow('TFormmain', Nil); // handle 返回非0值
shellexecute(handle, Nil, 'help.chm', Nil, '.\', SW_SHOWNORMAL);
// help.chm与主程序在同一目录下
Delphi可以实现直接调用C/C++的API函数,但首先必须进行声明。
Windows;const
// Commands to pass to HtmlHelp()
HH_DISPLAY_TOPIC = $0000;
HH_HELP_FINDER = $0000; // WinHelp equivalent
HH_DISPLAY_TOC = $0001; // not currently implemented
HH_DISPLAY_INDEX = $0002; // not currently implemented
HH_DISPLAY_SEARCH = $0003; // not currently implemented
HH_SET_WIN_TYPE = $0004;
HH_GET_WIN_TYPE = $0005;
HH_GET_WIN_HANDLE = $0006;
HH_ENUM_INFO_TYPE = $0007; // Get Info type name, call repeatedly to enumerate, -1 at end
HH_SET_INFO_TYPE = $0008; // Add Info type to filter.
HH_SYNC = $0009;
HH_RESERVED1 = $000A;
HH_RESERVED2 = $000B;
HH_RESERVED3 = $000C;
HH_KEYWORD_LOOKUP = $000D;
HH_DISPLAY_TEXT_POPUP = $000E; // display string resource id or text in a popup window
HH_HELP_CONTEXT = $000F; // display mapped numeric value in dwData
HH_TP_HELP_CONTEXTMENU = $0010; // text popup help, same as WinHelp HELP_CONTEXTMENU
HH_TP_HELP_WM_HELP = $0011; // text popup help, same as WinHelp HELP_WM_HELP
HH_CLOSE_ALL = $0012; // close all windows opened directly or indirectly by the caller
HH_ALINK_LOOKUP = $0013; // ALink version of HH_KEYWORD_LOOKUP
HH_GET_LAST_ERROR = $0014; // not currently implemented // See HHERROR.h
HH_ENUM_CATEGORY = $0015; // Get category name, call repeatedly to enumerate, -1 at end
HH_ENUM_CATEGORY_IT = $0016; // Get category info type members, call repeatedly to enumerate, -1 at end
HH_RESET_IT_FILTER = $0017; // Clear the info type filter of all info types.
HH_SET_INCLUSIVE_FILTER = $0018; // set inclusive filtering method for untyped topics to be included in display
HH_SET_EXCLUSIVE_FILTER = $0019; // set exclusive filtering method for untyped topics to be excluded from display
HH_INITIALIZE =$001C; // Initializes the help system.
HH_UNINITIALIZE =$001D; // Uninitializes the help system.
HH_PRETRANSLATEMESSAGE = $00fd; // Pumps messages. (NULL, NULL, MSG*).
HH_SET_GLOBAL_PROPERTY = $00fc; // Set a global property. (NULL, NULL, HH_GPROP) HHWIN_PROP_TAB_AUTOHIDESHOW = (1 shl 0); // Automatically hide/show tri-pane window
HHWIN_PROP_ONTOP = (1 shl 1); // Top-most window
HHWIN_PROP_NOTITLEBAR = (1 shl 2); // no title bar
HHWIN_PROP_NODEF_STYLES = (1 shl 3); // no default window styles (only HH_WINTYPE.dwStyles)
HHWIN_PROP_NODEF_EXSTYLES = (1 shl 4); // no default extended window styles (only HH_WINTYPE.dwExStyles)
HHWIN_PROP_TRI_PANE = (1 shl 5); // use a tri-pane window
HHWIN_PROP_NOTB_TEXT = (1 shl 6); // no text on toolbar buttons
HHWIN_PROP_POST_QUIT = (1 shl 7); // post WM_QUIT message when window closes
HHWIN_PROP_AUTO_SYNC = (1 shl 8); // automatically ssync contents and index
HHWIN_PROP_TRACKING = (1 shl 9); // send tracking notification messages
HHWIN_PROP_TAB_SEARCH = (1 shl 10); // include search tab in navigation pane
HHWIN_PROP_TAB_HISTORY = (1 shl 11); // include history tab in navigation pane
HHWIN_PROP_TAB_FAVORITES = (1 shl 12); // include favorites tab in navigation pane
HHWIN_PROP_CHANGE_TITLE = (1 shl 13); // Put current HTML title in title bar
HHWIN_PROP_NAV_ONLY_WIN = (1 shl 14); // Only display the navigation window
HHWIN_PROP_NO_TOOLBAR = (1 shl 15); // Don't display a toolbar
HHWIN_PROP_MENU = (1 shl 16); // Menu
HHWIN_PROP_TAB_ADVSEARCH = (1 shl 17); // Advanced FTS UI.
HHWIN_PROP_USER_POS = (1 shl 18); // After initial creation, user controls window size/position
HHWIN_PROP_TAB_CUSTOM1 = (1 shl 19); // Use custom tab #1
HHWIN_PROP_TAB_CUSTOM2 = (1 shl 20); // Use custom tab #2
HHWIN_PROP_TAB_CUSTOM3 = (1 shl 21); // Use custom tab #3
HHWIN_PROP_TAB_CUSTOM4 = (1 shl 22); // Use custom tab #4
HHWIN_PROP_TAB_CUSTOM5 = (1 shl 23); // Use custom tab #5
HHWIN_PROP_TAB_CUSTOM6 = (1 shl 24); // Use custom tab #6
HHWIN_PROP_TAB_CUSTOM7 = (1 shl 25); // Use custom tab #7
HHWIN_PROP_TAB_CUSTOM8 = (1 shl 26); // Use custom tab #8
HHWIN_PROP_TAB_CUSTOM9 = (1 shl 27); // Use custom tab #9
HHWIN_TB_MARGIN = (1 shl 28); // the window type has a margin HHWIN_PARAM_PROPERTIES = (1 shl 1); // valid fsWinProperties
HHWIN_PARAM_STYLES = (1 shl 2); // valid dwStyles
HHWIN_PARAM_EXSTYLES = (1 shl 3); // valid dwExStyles
HHWIN_PARAM_RECT = (1 shl 4); // valid rcWindowPos
HHWIN_PARAM_NAV_WIDTH = (1 shl 5); // valid iNavWidth
HHWIN_PARAM_SHOWSTATE = (1 shl 6); // valid nShowState
HHWIN_PARAM_INFOTYPES = (1 shl 7); // valid apInfoTypes
HHWIN_PARAM_TB_FLAGS = (1 shl 8); // valid fsToolBarFlags
HHWIN_PARAM_EXPANSION = (1 shl 9); // valid fNotExpanded
HHWIN_PARAM_TABPOS = (1 shl 10); // valid tabpos
HHWIN_PARAM_TABORDER = (1 shl 11); // valid taborder
HHWIN_PARAM_HISTORY_COUNT = (1 shl 12); // valid cHistory
HHWIN_PARAM_CUR_TAB = (1 shl 13); // valid curNavType HHWIN_BUTTON_EXPAND = (1 shl 1); // Expand/contract button
HHWIN_BUTTON_BACK = (1 shl 2); // Back button
HHWIN_BUTTON_FORWARD = (1 shl 3); // Forward button
HHWIN_BUTTON_STOP = (1 shl 4); // Stop button
HHWIN_BUTTON_REFRESH = (1 shl 5); // Refresh button
HHWIN_BUTTON_HOME = (1 shl 6); // Home button
HHWIN_BUTTON_BROWSE_FWD = (1 shl 7); // not implemented
HHWIN_BUTTON_BROWSE_BCK = (1 shl 8); // not implemented
HHWIN_BUTTON_NOTES = (1 shl 9); // not implemented
HHWIN_BUTTON_CONTENTS = (1 shl 10); // not implemented
HHWIN_BUTTON_SYNC = (1 shl 11); // Sync button
HHWIN_BUTTON_OPTIONS = (1 shl 12); // Options button
HHWIN_BUTTON_PRINT = (1 shl 13); // Print button
HHWIN_BUTTON_INDEX = (1 shl 14); // not implemented
HHWIN_BUTTON_SEARCH = (1 shl 15); // not implemented
HHWIN_BUTTON_HISTORY = (1 shl 16); // not implemented
HHWIN_BUTTON_FAVORITES = (1 shl 17); // not implemented
HHWIN_BUTTON_JUMP1 = (1 shl 18);
HHWIN_BUTTON_JUMP2 = (1 shl 19);
HHWIN_BUTTON_ZOOM = (1 shl 20);
HHWIN_BUTTON_TOC_NEXT = (1 shl 21);
HHWIN_BUTTON_TOC_PREV = (1 shl 22);HHWIN_DEF_BUTTONS = HHWIN_BUTTON_EXPAND
or HHWIN_BUTTON_BACK
or HHWIN_BUTTON_OPTIONS
or HHWIN_BUTTON_PRINT;// Button IDs
IDTB_EXPAND = 200;
IDTB_CONTRACT = 201;
IDTB_STOP = 202;
IDTB_REFRESH = 203;
IDTB_BACK = 204;
IDTB_HOME = 205;
IDTB_SYNC = 206;
IDTB_PRINT = 207;
IDTB_OPTIONS = 208;
IDTB_FORWARD = 209;
IDTB_NOTES = 210; // not implemented
IDTB_BROWSE_FWD = 211;
IDTB_BROWSE_BACK = 212;
IDTB_CONTENTS = 213; // not implemented
IDTB_INDEX = 214; // not implemented
IDTB_SEARCH = 215; // not implemented
IDTB_HISTORY = 216; // not implemented
IDTB_FAVORITES = 217; // not implemented
IDTB_JUMP1 = 218;
IDTB_JUMP2 = 219;
IDTB_CUSTOMIZE = 221;
IDTB_ZOOM = 222;
IDTB_TOC_NEXT = 223;
IDTB_TOC_PREV = 224;// Notification codes
HHN_FIRST = (0-860);
HHN_LAST = (0-879);HHN_NAVCOMPLETE = (HHN_FIRST-0);
HHN_TRACK = (HHN_FIRST-1);
HHN_WINDOW_CREATE =(HHN_FIRST-2);type
tagHHN_NOTIFY = record
hdr : NMHDR;
pszUrl: PChar; // Multi-byte, null-terminated string
end;
HHN_NOTIFY = tagHHN_NOTIFY;tagHH_POPUP = record
cbStruct: integer; // sizeof this structure
hinst: longint; // instance handle for string resource
idString: UINT; // string resource id, or text id if pszFile is specified in HtmlHelp call
pszText: LPCTSTR; // used if idString is zero
pt: TPOINT; // top center of popup window
clrForeground: COLORREF; // use -1 for default
clrBackground: COLORREF; // use -1 for default
rcMargins: TRECT; // amount of space between edges of window and text, -1 for each member to ignore
pszFont: LPCTSTR; // facename, point size, char set, BOLD ITALIC UNDERLINE
end;HH_POPUP = tagHH_POPUP;tagHH_AKLINK = record
cbStruct: integer; // sizeof this structure
fReserved: BOOL; // must be FALSE (really!)
pszKeywords: LPCTSTR; // semi-colon separated keywords
pszUrl: LPCTSTR; // URL to jump to if no keywords found (may be NULL)
pszMsgText: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
pszMsgTitle: LPCTSTR; // Message text to display in MessageBox if pszUrl is NULL and no keyword match
pszWindow: LPCTSTR; // Window to display URL in
fIndexOnFail:BOOL; // Displays index if keyword lookup fails.
end;
HH_AKLINK = tagHH_AKLINK;const
HHWIN_NAVTYPE_TOC = 0;
HHWIN_NAVTYPE_INDEX = 1;
HHWIN_NAVTYPE_SEARCH = 2;
HHWIN_NAVTYPE_FAVORITES = 3;
HHWIN_NAVTYPE_HISTORY = 4; // not implemented
HHWIN_NAVTYPE_AUTHOR = 5;
HHWIN_NAVTYPE_CUSTOM_FIRST = 11;IT_INCLUSIVE = 0;
IT_EXCLUSIVE = 1;
IT_HIDDEN = 2;type
tagHH_ENUM_IT=record
cbStruct : integer; // size of this structure
iType: integer; // the type of the information type ie. Inclusive, Exclusive, or Hidden
pszCatName: LPCSTR; // Set to the name of the Category to enumerate the info types in a category; else NULL
pszITName: LPCSTR; // volitile pointer to the name of the infotype. Allocated by call. Caller responsible for freeing
pszITDescription:LPCSTR; // volitile pointer to the description of the infotype.
end;HH_ENUM_IT = tagHH_ENUM_IT;
PHH_ENUM_IT = ^tagHH_ENUM_IT;tagHH_ENUM_CAT = record
cbStruct: integer; // size of this structure
pszCatName: LPCSTR; // volitile pointer to the category name
pszCatDescription: LPCSTR; // volitile pointer to the category description
end;HH_ENUM_CAT = tagHH_ENUM_CAT;
PHH_ENUM_CAT = ^tagHH_ENUM_CAT;tagHH_SET_INFOTYPE = record
cbStruct: integer; // the size of this structure
pszCatName: LPCSTR ; // the name of the category, if any, the InfoType is a member of.
pszInfoTypeName: LPCSTR ; // the name of the info type to add to the filter
end;HH_SET_INFOTYPE = tagHH_SET_INFOTYPE;
PHH_SET_INFOTYPE = ^tagHH_SET_INFOTYPE;HH_INFOTYPE = DWORD;
PHH_INFOTYPE = ^HH_INFOTYPE;const
HHWIN_NAVTAB_TOP = 0;
HHWIN_NAVTAB_LEFT = 1;
HHWIN_NAVTAB_BOTTOM = 2;
HH_MAX_TABS = 19; // maximum number of tabsHH_TAB_CONTENTS = 0;
HH_TAB_INDEX = 1;
HH_TAB_SEARCH = 2;
HH_TAB_FAVORITES = 3;
HH_TAB_HISTORY = 4;
HH_TAB_AUTHOR = 5;HH_TAB_CUSTOM_FIRST = 11;
HH_TAB_CUSTOM_LAST = HH_MAX_TABS;HH_MAX_TABS_CUSTOM = HH_TAB_CUSTOM_LAST - HH_TAB_CUSTOM_FIRST + 1;
// HH_DISPLAY_SEARCH Command Related Structures and Constants
HH_FTS_DEFAULT_PROXIMITY = -1;type
tagHH_FTS_QUERY=record
cbStruct: integer; // Sizeof structure in bytes.
fUniCodeStrings: BOOL; // TRUE if all strings are unicode.
pszSearchQuery: LPCTSTR;// String containing the search query.
iProximity: LongInt; // Word proximity.
fStemmedSearch: BOOL; // TRUE for StemmedSearch only.
fTitleOnly: BOOL; // TRUE for Title search only.
fExecute: BOOL; // TRUE to initiate the search.
pszWindow: LPCTSTR;// Window to display in
end;
HH_FTS_QUERY = tagHH_FTS_QUERY;// HH_WINTYPE StructuretagHH_WINTYPE =record
cbStruct: integer; // IN: size of this structure including all Information Types
fUniCodeStrings: BOOL; // IN/OUT: TRUE if all strings are in UNICODE
pszType: LPCTSTR; // IN/OUT: Name of a type of window
fsValidMembers: DWORD; // IN: Bit flag of valid members (HHWIN_PARAM_)
fsWinProperties: DWORD; // IN/OUT: Properties/attributes of the window (HHWIN_)pszCaption: LPCTSTR; // IN/OUT: Window title
dwStyles: DWORD; // IN/OUT: Window styles
dwExStyles: DWORD; // IN/OUT: Extended Window styles
rcWindowPos: TRECT; // IN: Starting position, OUT: current position
nShowState: integer; // IN: show state (e.g., SW_SHOW)hwndHelp: HWND; // OUT: window handle
hwndCaller: HWND; // OUT: who called this windowpaInfoTypes: ^HH_INFOTYPE; // IN: Pointer to an array of Information Types
// The following members are only valid if HHWIN_PROP_TRI_PANE is set
hwndToolBar: HWND; // OUT: toolbar window in tri-pane window
hwndNavigation: HWND; // OUT: navigation window in tri-pane window
hwndHTML: HWND; // OUT: window displaying HTML in tri-pane window
iNavWidth: integer; // IN/OUT: width of navigation window
rcHTML: TRECT; // OUT: HTML window coordinatespszToc: LPCTSTR; // IN: Location of the table of contents file
pszIndex: LPCTSTR; // IN: Location of the index file
pszFile: LPCTSTR; // IN: Default location of the html file
pszHome: LPCTSTR; // IN/OUT: html file to display when Home button is clicked
fsToolBarFlags: DWORD; // IN: flags controling the appearance of the toolbar
fNotExpanded: BOOL; // IN: TRUE/FALSE to contract or expand, OUT: current state
curNavType: integer; // IN/OUT: UI to display in the navigational pane
tabpos: integer; // IN/OUT: HHWIN_NAVTAB_TOP, HHWIN_NAVTAB_LEFT, or HHWIN_NAVTAB_BOTTOM
idNotify: integer; // IN: ID to use for WM_NOTIFY messages
tabOrder: array[0..HH_MAX_TABS]of BYTE; // IN/OUT: tab order: Contents, Index, Search, History, Favorites, Reserved 1-5, Custom tabs
cHistory: integer; // IN/OUT: number of history items to keep (default is 30)
pszJump1: LPCTSTR; // Text for HHWIN_BUTTON_JUMP1
pszJump2: LPCTSTR; // Text for HHWIN_BUTTON_JUMP2
pszUrlJump1: LPCTSTR; // URL for HHWIN_BUTTON_JUMP1
pszUrlJump2: LPCTSTR; // URL for HHWIN_BUTTON_JUMP2
rcMinSize: TRECT; // Minimum size for window (ignored in version 1)
cbInfoTypes: integer; // size of paInfoTypes:
pszCustomTabs: LPCTSTR; // multiple zero-terminated strings
end;HH_WINTYPE = tagHH_WINTYPE;
PHH_WINTYPE = ^tagHH_WINTYPE;THHACT = (
HHACT_TAB_CONTENTS,
HHACT_TAB_INDEX,
HHACT_TAB_SEARCH,
HHACT_TAB_HISTORY,
HHACT_TAB_FAVORITES, HHACT_EXPAND,
HHACT_CONTRACT,
HHACT_BACK,
HHACT_FORWARD,
HHACT_STOP,
HHACT_REFRESH,
HHACT_HOME,
HHACT_SYNC,
HHACT_OPTIONS,
HHACT_PRINT,
HHACT_HIGHLIGHT,
HHACT_CUSTOMIZE,
HHACT_JUMP1,
HHACT_JUMP2,
HHACT_ZOOM,
HHACT_TOC_NEXT,
HHACT_TOC_PREV,
HHACT_NOTES,
HHACT_LAST_ENUM
);tagHHNTRACK=record
hdr: NMHDR;
pszCurUrl: PChar; // Multi-byte, null-terminated string
idAction: integer; // HHACT_ value
phhWinType: ^HH_WINTYPE; // Current window type structure
end;
HHNTRACK = tagHHNTRACK;const
// Use the following for GetProcAddress to load from hhctrl.ocx
ATOM_HTMLHELP_API_ANSI = PChar(DWORD(WORD(14)));
ATOM_HTMLHELP_API_UNICODE = PChar(DWORD(WORD(15)));///////////////////////////////////////////////////////////////////////////////
//
// Global Control Properties.
//
// tagHH_GPROPID = (
const
HH_GPROPID_SINGLETHREAD =1; // VARIANT_BOOL: True for single thread
HH_GPROPID_TOOLBAR_MARGIN =2; // long: Provides a left/right margin around the toolbar.
HH_GPROPID_UI_LANGUAGE =3; // long: LangId of the UI.
HH_GPROPID_CURRENT_SUBSET =4; // BSTR: Current subset.
HH_GPROPID_CONTENT_LANGUAGE =5; // long: LandId for desired content.
// );
// HH_GPROPID = tagHH_GPROPID;
type
HH_GPROPID = integer;
///////////////////////////////////////////////////////////////////////////////
//
// Global Property structure
//
tagHH_GLOBAL_PROPERTY=record
id: HH_GPROPID;
vari: Variant;
end;HH_GLOBAL_PROPERTY = tagHH_GLOBAL_PROPERTY;DWORD_PTR = ^DWORD;
THTMLHelpA = function (hwndCaller: HWND; pszFile: LPCSTR;
uCommand:DWORD; dwData: DWORD): HWND; stdcall;
THtmlHelpW = function (hwndCaller: HWND; pszFile: PWideChar;
uCommand:DWORD; dwData: DWORD): HWND; stdcall;
{$IFDEF UNICODE}
THTMLHelp = THTMLHelpW;
{$ELSE}
THTMLHelp = THTMLHelpA;
{$ENDIF}function HTMLHelpA(hwndCaller: HWND; pszFile: LPCSTR;
uCommand: DWORD; dwData: DWORD): HWND; stdcall;
function HtmlHelpW(hwndCaller: HWND; pszFile: PWideChar;
uCommand: DWORD; dwData: DWORD): HWND; stdcall;
{$IFDEF UNICODE}
function HtmlHelp(hwndCaller: HWND; pszFile: PWideChar;
uCommand: DWORD; dwData: DWORD): HWND; stdcall;
{$ELSE}
function HTMLHelp(hwndCaller: HWND; pszFile: LPCSTR;
uCommand: DWORD; dwData: DWORD): HWND; stdcall;
{$ENDIF}function HTMLHelpOK: Boolean;implementationvar
hHHCtrlLib: THandle;
pHTMLHelpA: THTMLHelpA;
pHTMLHelpW: THTMLHelpW;
pHTMLHelp : THTMLHelp;function HTMLHelpOK: Boolean;
begin
Result := hHHCtrlLib <> 0;
end;function HTMLHelpA(hwndCaller:HWND; pszFile: LPCSTR;
uCommand:DWORD; dwData: DWORD):HWND;
begin
if Assigned(pHTMLHelpA) then
Result := pHTMLHelpA(hwndCaller, pszFile, uCommand, dwData)
else
Result := 0;
end;function HtmlHelpW(hwndCaller : HWND; pszFile: PWideChar;
uCommand: DWORD; dwData : DWORD) : HWND;
begin
if Assigned(pHTMLHelpW) then
Result := pHTMLHelpW(hwndCaller, pszFile, uCommand, dwData)
else
Result := 0;
end;{$IFDEF UNICODE}
function HtmlHelp(hwndCaller : HWND; pszFile: PWideChar;
uCommand: DWORD; dwData : DWORD) : HWND;
{$ELSE}
function HTMLHelp(hwndCaller:HWND; pszFile: LPCSTR;
uCommand:DWORD; dwData: DWORD):HWND;
{$ENDIF}
begin
if Assigned(pHTMLHelp) then
Result := pHTMLHelp(hwndCaller, pszFile, uCommand, dwData)
else
Result := 0;
end;initialization
begin
hHHCtrlLib := LoadLibrary('HHCtrl.ocx');
if HTMLHelpOK then begin
pHTMLHelpA := GetProcAddress(hHHCtrlLib, 'HtmlHelpA');
pHTMLHelpW := GetProcAddress(hHHCtrlLib, 'HtmlHelpW');
{$IFDEF UNICODE}
pHtmlHelp := pHTMLHelpW;
{$ELSE}
pHtmlHelp := pHTMLHelpA;
{$ENDIF}
end;
end;finalization
begin
if HTMLHelpOK then FreeLibrary(hHHCtrlLib);
end;end.
把这个单元加入你正使用的单元。
然后用 ss:='E:\MYDOC\chmHelp\second.chm'+'::/JDataStore问题.htm';
HtmlHelpW(self.handle,pwidechar(ss),HH_DISPLAY_TOPIC,0);
可以跳到你要的主题