我正在开发一个应用程序Delphi 7
,它将运行并显示由FastMM4.pas
.
该应用程序将安装在系统的任何位置。我已经修改了它,FastMM4.pas
以便它CreateProcess
(简而言之执行我的应用程序)我 以前的问题和Sertac Akyuz 的答案中的代码
将leakTracker.exe
fastmm4的日志文件作为参数,打开文件并显示。修改后的fastMM4.pas
将用于任何其他应用程序。
Procedure OpenTheLeakReader
begin
CmdLine := 'C:\Program Files\leakTracker\leakTracker.exe "';
lstrcat(CmdLine,CTheArGuements );
ZeroMemory(@SInfo, SizeOf(SInfo));
SInfo.cb := SizeOf(SInfo);
CreateProcess(nil, CmdLine, nil, nil, False, NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo);
end;
这工作正常,但我已经硬编码了path
因为得到我的应用程序路径..
[FastMM4] -cannot use SysUtils.pas //*1
-cannot use Registry.pas //*2
-cannot use ParamStr(0) //*3
-cannot use unitWithSysRegis //*4
[someAplicationWhichWillUseFastMM4] -Uses FastMM4.pas
在FAstMM4.pas
finalization
我有这个
if ifLeakedMemory then OpenTheLeakReader;
因为我不能拥有
*1 - SysUtils.pas
- 在 FastMM4.pass 中,因为这将卸载 fastmmm4
*2 - Registry.pas
- 搜索leakTracker
安装路径但会卸载 fastmm4
*3 - paramstr(0)
- 它在应用程序结束时给出错误。
*4 - unitWithSysRegis
- 使用 SysUtils,Registry 在 Fastm4 使用子句中也是不可能的。
所以我被困在如何leakTracker.exe
通过CreateProcess获取日志文件的路径并将其发送到“leakTracker.exe”。