这个程序不断吃内存
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, TLHelp32;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
function FindProcess(PName: string): DWord;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.FindProcess(PName: string): DWord;
var
lppe:TProcessEntry32;
h:THandle;
found:boolean;
begin
result:=0;
h:=CreateToolHelp32Snapshot(TH32CS_SNAPALL,0);
found:=Process32First(h,lppe);
while found do
begin
if AnsiCompareText(ExtractFileName(lppe.szExeFile),ExtractFileName(PName))=0 then
begin
result:=lppe.th32ProcessID;
break;
end;
found:=Process32Next(h,lppe);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
begin
for i:=0 to 10 do
if FindProcess('notepad.exe')<>0 then
Caption:='Found';
end;
end.
这个程序会不断吃掉内存,请问各位大虾怎么改?
问题点数:50、回复次数:6Top
1 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-07 21:37:42 得分 0
是不是你的Timer的InterVal属性设置太小了?查询过程过于频繁?Top
2 楼aiirii(ari-http://spaces.msn.com/members/aiirii/)回复于 2006-03-07 21:40:51 得分 50
break;
end;
found:=Process32Next(h,lppe);
end;
CloseHandle(h);Top
3 楼cenjoyer(伊轩)回复于 2006-03-07 21:56:01 得分 0
设长了也一样Top
4 楼cenjoyer(伊轩)回复于 2006-03-07 21:56:28 得分 0
我现在设的是3000(3秒)Top
5 楼cuteant(我这张旧床票还能否登上你的破床|涛声是否依旧)回复于 2006-03-07 21:57:40 得分 0
呵呵,aiirii说的你试了么?将打开的Handle不用了就关掉Top
6 楼cenjoyer(伊轩)回复于 2006-03-07 22:19:49 得分 0
哈哈哈.成功了.万分感谢.Top




