我通过 shell命令执行 hh.exe ,从Lua中打开.chm帮助文件;用户单击Lua应用程序中的多个“帮助”按钮之一,然后转到“帮助”文件中的某个主题,具体取决于所使用的“帮助”按钮的上下文。
local HelpFile = strDir.."\\"..strName.." "..strVersion..".chm"
--strDir,strName,strVersion all identify the help file to be used
local topicpath = "options" --an example; will differ according to application context
local helpexecutable = "C:\\windows\\hh.exe"
local helpparms = "::/"..string.lower(string.gsub(topicpath..".htm","")
local bOK,intErrorCode,strErrortext =
fhshellExecute(helpexecutable,HelpFile..helpparms)
-- open the help file at a specified location
此代码可以很好地打开我想要的主题的帮助文件。
注意fhshellExecute是程序主机特定的API,等效于os.execute
参数:
strFileName :字符串:文件的完整路径。记住斜线 在Lua中必须加倍(例如“ C:\ MyDocuments \ My Program.exe”)。
strParams :字符串:参数。如果strFileName是可执行文件, strParams保存要传递给它的参数。应该为空,或者 如果strFileName是文档文件,则不提供。
strDirectory : 字符串:指定操作的默认(工作)目录。如果不 提供,将使用当前工作目录。
操作: 字符串:指定要执行的操作。可用动作集 取决于特定的文件或文件夹。一般来说,动作 对象的快捷菜单中提供的是可用操作。
iShowCmd :整数:指定打开应用程序时的显示方式。如果未提供,则该值默认为1。定义了以下值:
0隐藏窗口并激活另一个窗口
1激活并显示一个窗口。如果窗口最小化或 Windows将其最大化,将其还原到原始大小和位置。一个 应用程序在显示窗口时应指定此标志 第一次。
2激活窗口并将其显示为最小化窗口。
3激活窗口并将其显示为最大化窗口。
4以最近的大小和位置显示窗口。主动 窗口保持活动状态。
5激活窗口并以其当前大小和位置显示它。
6最小化指定的窗口并激活下一个顶层 Z顺序的窗口。
7将窗口显示为最小化窗口。活动窗口保留 活性。
8以当前状态显示窗口。活动窗口保留 活性。
9激活并显示窗口。如果窗口最小化或 Windows将其最大化,将其还原到原始大小和位置。一个 还原最小化窗口时,应用程序应指定此标志。
因为我使用的是hh.exe,所以每次用户单击“帮助”按钮时,都会出现一个新的“帮助”实例,这不是我(或用户)想要的。打开“帮助”窗口以阻止应用程序的操作是不可接受的。
适应此处显示的方法How to have only one instance of the CHM file opened?(测试帮助文件是否可重命名-如果不能重命名,则说明它正在使用中)我可以防止打开第二个“帮助”窗口。但是,我看不到任何指示打开的“帮助”窗口导航到新上下文主题的方法。
我只能访问一组非常有限的Lua库,因此我需要一个可以通过shell命令执行的解决方案。我的想法是:
- 要在现有“帮助”窗口中移动位置
- 要关闭现有的“帮助”窗口,然后在正确的位置打开一个新窗口
但是我不知道该怎么做。