我维护一个用Delphi 6编写的程序。它使用SysUtils.LoadPackage动态加载一些bpl包文件。我经常在程序中更改导致程序包无法加载的内容。发生这种情况时,会出现一个消息框,然后抛出异常。消息框和例外是分开的。
以下是消息框的示例:
---------------------------
Connect Manager: ConnectManager.exe - Entry Point Not Found
---------------------------
The procedure entry point @Connectmanagerplugin@TConnectManagerPluginClassList@UnRegister$qqrp17System@TMetaClass could not be located in the dynamic link library ConnectManagerPack.bpl.
---------------------------
OK
---------------------------
这是例外:
---------------------------
Debugger Exception Notification
---------------------------
Project ConnectManager.exe raised exception class EPackageError with message 'Can't load package Projects.bpl.
The specified procedure could not be found'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
我看不到如何阻止消息框出现。感激地接受任何想法。
答案 0 :(得分:3)
解决!
我在我的应用程序中创建了SysUtils.LoadPackage的副本,并编辑了此副本以将第二个参数传递给SafeLoadLibrary。
所以现在对SafeLoadLibrary的调用如下:
Result := SafeLoadLibrary(Name, SEM_FAILCRITICALERRORS);
这有助于:http://msdn.microsoft.com/en-us/library/ms680621%28VS.85%29.aspx。