在DelPhi中调用CHM文件的大致做法如下: 1.在程序开始的uses部分加入‘ShellAPI',位置随意。这个操作的目的是通知计算机本程序将使用SHellAPI中的函数。程序段如下。 unit Unit1; interface uses Windows, Messages, SysUtils, ...,ShellAPI,...; 2.对于具体进行CHM文件操作的语句,可以设置一个过程。可参考的过程如下。(假设CHM文件的文件名是AAA.CHM) procedure TForm1.OpenCHM; var p:pchar; begin if FileExists(ExtractFilePath(Application.Exename)+'AAA.chm') then begin p:=pchar(ExtractFilePath(Application.Exename)+'AAA.chm'); ShellExecute(0, nil, p, nil, nil, SW_NORMAL); end else begin MessageBox(Form1.Handle,' 没有帮助文件 ! ','提示信息', MB_OK or MB_ICONINFORMATION); end; end; 在需要调用CHM文件时,调用这个过程即可。
ShellExecute(handle,'open','c:\Help.chm','','',SW_ShowNormal);
{第一个参数为父窗口句柄;
第二个参数为打开方式(Open,Print两种);
第三个参数为执行文件全路径;
第四个参数为执行文件参数;
第五个参数为执行文件开始运行时的初始目录;
第六个参数为为执行文件运行方式(SW_Hide,SW_Maximize,SW_Minimize,
SW_Restore,SW_Show,SW_ShowDefault,SW_ShowMaximized,SW_ShowMinimize),
SW_ShowMinNoActive,SW_ShowNo,SW_ShowNoActivate,SW_ShowNormal);}
参数为:窗口句柄,打开方式,执行文件路径,执行参数,初始目录,运行方式要是帮助文件为hlp文件不知行不行
不过有另外的解决办法
你可以搜搜帖子
ShellExecute(handle, "open", 'myhelp.chm', Nil, Nil, SW_SHOWNORMAL);
Winexec('hh.exe '+Path+'myhelp.chm',sw_normal);
application.HelpCommand(help_finder,0);ShellExecute(handle, "open", 'myhelp.chm', Nil, Nil, SW_SHOWNORMAL);
ShellExecute(handle,'open','c:\Help.chm','','',SW_ShowNormal);
{第一个参数为父窗口句柄;
第二个参数为打开方式(Open,Print两种);
第三个参数为执行文件全路径;
第四个参数为执行文件参数;
第五个参数为执行文件开始运行时的初始目录;
第六个参数为为执行文件运行方式(SW_Hide,SW_Maximize,SW_Minimize,
SW_Restore,SW_Show,SW_ShowDefault,SW_ShowMaximized,SW_ShowMinimize),
SW_ShowMinNoActive,SW_ShowNo,SW_ShowNoActivate,SW_ShowNormal);}
但是还有一点比较重要,要在uses中加上shellapi,大家都忽略了阿!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
application.HelpCommand(help_finder,0);ShellExecute(handle, "open", 'myhelp.chm', Nil, Nil, SW_SHOWNORMAL);
{$R *.DFM}procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_F1 then
ShellExecute(Form1.Handle, "open", 'myhelp.chm', '', '', SW_SHOWNORMAL);
end;
WinExec(PChar('hh.exe ' + ExtractFilePath(Application.ExeName) + 'Help.chm'), SW_SHOWMAXIMIZED);//调用与HH.EXE共同目录下的HELP文件
1.在程序开始的uses部分加入‘ShellAPI',位置随意。这个操作的目的是通知计算机本程序将使用SHellAPI中的函数。程序段如下。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, ...,ShellAPI,...;
2.对于具体进行CHM文件操作的语句,可以设置一个过程。可参考的过程如下。(假设CHM文件的文件名是AAA.CHM)
procedure TForm1.OpenCHM;
var
p:pchar;
begin
if FileExists(ExtractFilePath(Application.Exename)+'AAA.chm') then
begin
p:=pchar(ExtractFilePath(Application.Exename)+'AAA.chm');
ShellExecute(0, nil, p, nil, nil, SW_NORMAL);
end
else
begin
MessageBox(Form1.Handle,' 没有帮助文件 ! ','提示信息', MB_OK or MB_ICONINFORMATION);
end;
end;
在需要调用CHM文件时,调用这个过程即可。
在开发应用程序过程中, 为更好地方便用户熟悉此软件的功能和使用方法, 我们可以使用CHM的帮助文档。那么, 如何更好地使CHM文档融入到你的应用程序中呢?笔者谈谈一种简单、方便的方法, 以供参考。 在Win9.x的system目录下(或Win2000的system32目录下)可以找到hhctrl.ocx文件, 虽然这个文件是ActiveX, 但是它还可以当成DLL动态链接库使用,不过它必须在IE4.0以后才有提供。通过分析 hhctrl.ocx 文件,可以看出它提供了一个HtmlHelpA函数来对CHM文件进行调用。 首先,在implementation里,作如下声明: function HtmlHelpA(hwndCaller: THandle; pazFile: String; uCommand, dwData: DWord): DWord; stdcall external ’hhctrl.ocx’; 然后就可以进行使用,例如: HtmlHelpA (handle, ’c\winnt\help\access.chm’, 0, 0); 非常简单吧, 试试看, 您一定行的, 为你的程序加入这个简单易行的功能吧!至于F1嘛,你可以给帮助菜单项加一个F1快捷键就可以了。
{ 显示帮助文件目录}Application.HelpCommand(HELP_CONTENTS, 0);
{ 显示指定主题 }Application.HelpJump('TApplication_HelpJump');
Shellexecute(0,'open',pp,nil,nil,SW_MAXIMIZE);
Shellexecute(0,'open',pp,nil,nil,SW_MAXIMIZE);