Текущий архив: 2005.07.25;
Скачать: CL | DM;
Вниз
Файл помощи *.chm Найти похожие ветки
← →
zorik © (2005-07-05 10:25) [0]Как подключить файл помощи вида *.chm к проэкту?
У меня Delphi6, WinXP
← →
alex-drob (2005-07-05 10:30) [1]WinExec
← →
zorik © (2005-07-05 10:45) [2]Не проходит :-( И ShellExecute тоже не получается
← →
alex-drob (2005-07-05 10:52) [3]shellexecute(handle,"open","....chm",nil,nil,sw_shownormal);
У меня работает.
← →
Вася Пупкин © (2005-07-05 11:05) [4]
unit uHTMLHelp;
interface
uses Windows;
const
HH_DISPLAY_TOPIC = $0000;
HH_HELP_FINDER = $0000; // WinHelp equivalent
HH_DISPLAY_TOC = $0001;
HH_DISPLAY_INDEX = $0002;
HH_DISPLAY_SEARCH = $0003;
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)
type
THtmlHelpA = function(hwndCaller: THandle; pszFile: PChar;
uCommand: DWORD; dwData: DWORD): THandle; stdCall;
function HtmlHelp(hwndCaller: THandle; pszFile: PChar; uCommand: DWORD;
dwData: DWORD): THandle;
var
dwCookie:DWORD = 0;
HtmlHelpA: THtmlHelpA;
OCXHandle: THandle;
HelpFileName:string;
implementation
function HtmlHelpInstalled: Boolean;
begin
Result := (Assigned(HtmlHelpA));
end;
function HtmlHelp(hwndCaller: THandle; pszFile: PChar; uCommand: Cardinal;
dwData: DWORD): THandle;
begin
Result := 0;
if (Assigned(HtmlHelpA)) then
begin
Result := HtmlHelpA(hwndCaller, pszFile, uCommand, dwData);
end;
end;
initialization
begin
HtmlHelpA := nil;
OCXHandle := LoadLibrary("HHCtrl.OCX");
if (OCXHandle <> 0) then
begin
HtmlHelpA := GetProcAddress(OCXHandle, "HtmlHelpA");
HtmlHelpA( 0, "", HH_INITIALIZE, dwCookie) ; // Cookie returned by Hhctrl.ocx.
end
end
finalization
begin
if (OCXHandle <> 0) then
begin
HtmlHelpA(0,"", HH_CLOSE_ALL, 0) ;
HtmlHelpA(0,"",HH_UNINITIALIZE,dwCookie) ;
FreeLibrary(OCXHandle);
end
end
end.
← →
zorik © (2005-07-05 11:07) [5]Получилось. Я вместо sw_shownormal писал 0
← →
Вася Пупкин © (2005-07-05 11:10) [6]Применение:
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,Menus, AppEvnts, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
.......
Help1: TMenuItem;
About1: TMenuItem;
Contents1: TMenuItem;
Image1: TImage;
procedure Contents1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMHelp(var aMessage: TWMHelp); message WM_HELP;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses uHTMLHelp;
{$R *.dfm}
function GetMenuHelpContext(Menu: TMenu; aMessage: TWMHelp): Integer;
begin
Result := 0;
if (Menu <> nil) then
begin
Result := Menu.GetHelpContext(aMessage.HelpInfo.iCtrlId, true);
if (Result = 0) then
Result := Menu.GetHelpContext(aMessage.HelpInfo.hItemHandle, false);
end;
end;
procedure TForm1.WMHelp(var aMessage: TWMHelp);
var
Control: TWinControl;
ContextId: integer;
hlp: HWND;
begin
if (aMessage.HelpInfo.iContextType = HELPINFO_WINDOW) then
begin
Control := FindControl(aMessage.HelpInfo.hItemHandle);
while ((Control <> nil) and (Control.HelpContext = 0)) do
Control := Control.Parent;
if (Control = nil) then exit;
ContextId := Control.HelpContext;
end
else
begin
ContextId := GetMenuHelpContext(Menu, aMessage); // Для меню
if (ContextId = 0) then
ContextId := GetMenuHelpContext(PopupMenu, aMessage);
end;
hlp := HtmlHelp(Handle, pchar(HelpFileName), HH_HELP_CONTEXT, ContextId);
if (hlp = 0) then
ShowMessage("Помощь не найдена!");
end;
procedure TForm1.Contents1Click(Sender: TObject);
begin
HtmlHelp(Handle, pchar(HelpFileName), HH_DISPLAY_TOPIC, 0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HelpFileName := "Test.chm";//Application.HelpFile;
end;
end.
ps Один из множества возможных вариантов -)
← →
zorik © (2005-07-05 11:24) [7]>> Вася Пупкин
Спасибо. Получилось. Буду разбиратся. Я еще до такого уровня не дошел :-)
← →
Eraser © (2005-07-05 12:07) [8]zorik © (05.07.05 10:25)
http://www.ec-software.com/comppage.htm - советую.
Страницы: 1 вся ветка
Текущий архив: 2005.07.25;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.011 c