关于Chm文件的调用问题……在线等 ( 积分: 50 )

  • 主题发起人 主题发起人 jzg007
  • 开始时间 开始时间
J

jzg007

Unregistered / Unconfirmed
GUEST, unregistred user!
各位前辈你们好,我最近刚完成一个程序设计,遇到这样一个问题:当help.chm文件与主应用程序在同一目录下时,可以调取帮助文件。但当我完成安装包后,将程序装到任意目录下,点击桌面的快捷方式或是点击开始菜单中的程序运行时,点击帮助文件不起作用,我到
程序安装目录下运行,又有反应,请问我该如何解决?
还有就是:ShellExecute(self.Handle,'open','help.chm','', '',SW_SHOW);
此语句,每次都打开相同帮助页面,能否有其它语句实现:打开制定的帮助页面?
在下谢谢了。
 
各位前辈你们好,我最近刚完成一个程序设计,遇到这样一个问题:当help.chm文件与主应用程序在同一目录下时,可以调取帮助文件。但当我完成安装包后,将程序装到任意目录下,点击桌面的快捷方式或是点击开始菜单中的程序运行时,点击帮助文件不起作用,我到
程序安装目录下运行,又有反应,请问我该如何解决?
还有就是:ShellExecute(self.Handle,'open','help.chm','', '',SW_SHOW);
此语句,每次都打开相同帮助页面,能否有其它语句实现:打开制定的帮助页面?
在下谢谢了。
 
第三个参数应该是'你要打开的文件路径'
最好使用extractfilepath等函数首先将exe文件所在目录找出来,然后再使用。
例如
var
s:string;
begin
s:=ExtractFilePath(ParamStr(0));
ShellExecute(self.Handle,'open',s+'help.chm','', '',SW_SHOW);
end;
..
楼上的路径不全,代码执行的时候就使用当前文件所在路径了.比如如果快捷方式在桌面,路径就是桌面上的文件help.chm,所有找不到。。。
 
路径错误
var
s:string;
begin
s:=ExtractFilePath(Application.exename);
ShellExecute(self.Handle,'open',s+'/help.chm','', '',SW_SHOW);
end;
..
 
to 小红河、nighteye:
我用你们给我的语句在执行时,程序提示:
incompatible types:'String' and 'PAnsiChar'
请问二位我该如何解决?
 
function HtmlHelp(hwndCaller:HWND;pszFile:PChar;uCommand:UINT;dwData:DWORD):HWND;stdcall;external 'HHCtrl.ocx' name 'HtmlHelpA';overload;
function HtmlHelp(ChmHelpFile,ContextStr:string):HWND;overload
function HtmlHelpA(hwndCaller:HWND;pszFile:PChar;uCommand:UINT;dwData:DWORD):HWND;stdcall;external 'HHCtrl.ocx' name 'HtmlHelpA';
function HtmlHelpW(hwndCaller:HWND;pszFile:PChar;uCommand:UINT;dwData:DWORD):HWND;stdcall;external 'HHCtrl.ocx' name 'HtmlHelpW';
 
function HtmlHelp(ChmHelpFile,ContextStr:string):HWND;
var
Link: THHAKLink;
begin
FillChar(Link, SizeOf(Link), 0);
Link.cbStruct := SizeOf(Link);
Link.fReserved := False;
Link.pszKeywords := PChar(ContextStr);
Link.pszUrl := nil;
Link.pszMsgText := nil;
Link.pszMsgTitle := nil;
Link.pszWindow := PChar('Main');
Link.fIndexOnFail := true;
Result :=HtmlHelp(0,PChar(ChmHelpFile),HH_KEYWORD_LOOKUP,DWORD(@Link));
end;
 
tagHH_AKLINK = packed 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;
{$EXTERNALSYM tagHH_AKLINK}
HH_AKLINK = tagHH_AKLINK;
{$EXTERNALSYM HH_AKLINK}
THHAKLink = tagHH_AKLINK;
 
to cyradg你好:
请问下面的代码有问题吗?
s:=ExtractFilePath(Application.exename);
ShellExecute(self.Handle,'open',s+'/help.chm','', '',SW_SHOW);
 
应该没有问题,我以为要在程序中调用某个关键字的帮助呢,呵呵.
 
http://www.delphifans.com/SoftView/SoftView_826.html
 
ShellExecute(self.Handle,'open',Pchar(s+'/help.chm',),nil,nil,SW_SHOW);
 
真得不知如何感谢大家,对于大家的帮助,我无以言表(真心话!)。有网络真好,谢谢了!
 
后退
顶部