CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

这个程序不断吃内存

楼主cenjoyer(伊轩)2006-03-07 21:31:07 在 Delphi / Windows SDK/API 提问

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

相关问题

  • 我的程序是不是吃内存
  • 程序运行时,内存不断下降
  • 程序运行时,内存不断增大(无泄漏)
  • 高分求救,我的xml练习程序狂吃内存!!!!!
  • 如何简单判断程序是不是吃内存
  • vb.net开发的程序疯狂吃内存,怎么办?
  • 如何释放程序吃掉的内存?
  • 郁闷,客户反映程序吃内存
  • 关于程序吃内存给些建议!
  • 内存驻留程序--tsr

关键词

  • lppe
  • findprocess
  • timer
  • tform
  • pname
  • found
  • begin
  • process
  • var

得分解答快速导航

  • 帖主:cenjoyer
  • aiirii

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo