我正在开发一个使用FastMM4
来自sourceforge.net的应用程序。所以我FastMM4.pas
在开头就添加了uses子句。在应用程序中,我需要像这样运行一个batch
文件FinalizeMemoryManager;
finalization
unit FastMM4;
initialization
RunInitializationCode;
finalization
{$ifndef PatchBCBTerminate}
FinalizeMemoryManager;
RunTheBatFileAtTheEnd; //my code here..calling a procedure
{$endif}
end.
那么我的RunTheBatFileAtTheEnd代码是:
procedure RunTheBatFileAtTheEnd;
begin
//some code here....
sFilePaTh:=SysUtils.ExtractFilePath(applicaTname)+sFileNameNoextension+'_log.nam';
ShellExecute(applcatiOnHAndle,'open', pchar(sExeName),pchar(sFilePaTh), nil, SW_SHOWNORMAL) ;
end;
为此,我需要SysUtils,shellapi
在 fastmm4 单元的使用条款中使用。但是使用它们这个消息来了
但是,如果我SysUtils,shellapi
从用途中删除它就可以了。我仍然需要安装 fastmm4 的所有功能,但是SysUtils,shellapi
没有安装 fastmm4
我有一个自己的单元,但它的最终化是在 fastmm4 最终化之前执行的。
谁能告诉我如何解决这个问题?
编辑- 1
unit FastMM4;
//...
...
implementation
uses
{$ifndef Linux}Windows,{$ifdef FullDebugMode}{$ifdef Delphi4or5}ShlObj,{$else}
SHFolder,{$endif}{$endif}{$else}Libc,{$endif}FastMM4Messages,SysUtils,shellapi;
我的应用程序
program memCheckTest;
uses
FastMM4,
编辑-2:
(在@SertacAkyuz 回答之后),我删除SysUtils
了它并且它工作了,但我仍然需要运行批处理文件来打开外部应用程序RunTheBatFileAtTheEnd
。原因是..我希望外部应用程序仅在 FastMM4 退出finalization
. 这sExeName
是将运行文件sFilePaTh
(.nam) 的应用程序。任何人都可以告诉如何做到这一点?没有uninstalling FastMM4
。