这是我的问题。在主应用程序和DLL之间共享ICustomHelpViewer
我有一个加载DLL的应用程序。我有源和控制主应用程序和DLL。我希望DLL使用与主应用程序中使用的帮助查看器相同的帮助查看器(由System.HelpIntfs.RegisterViewer注册)。
现在,我相信如果DLL和主应用程序都“与运行时软件包链接”,那么这将自动完成(IIRC)。为了这个问题,我们假设这个选项不在桌面上(政治......)
我首先研究了在System.HelpIntfs单元中手动分配变量HelpManager: IHelpManager
的可能性。但该变量似乎不可访问(它在实现部分中,并且没有任何过程似乎允许设置它)。
然后我看着TApplication。手动分配FHelpSystem : IHelpSystem
将解决我的问题,但该变量只能通过只读属性访问。
我想过将主应用程序的ICustomHelpViewer传递给DLL并调用RegisterViewer,但后来我开始担心它会“损坏”,并且在DLL卸载时可能会“关闭”。
然后我想创建另一个ICustomHelpViewer,我将它传递给我的DLL,它只是将所有相关的调用映射到应用程序的ICustomHelpViewer。我想我应该转发除ShutDown
,SoftShutDown
和NotifyId
之外的所有呼叫。我对吗?
有没有更好的选择?
我认为我会做这样的:1.不包括帮助查看器单元的DLL,以便没有帮助经理获得注册。 2.为DLL的'Application'对象添加一个'OnHelp'事件处理程序。 3.让'OnHelp'事件处理程序委托给主机可执行文件的'Application.HelpCommand'。 – 2014-10-07 15:23:39