zoukankan      html  css  js  c++  java
  • 8、显示程序占用内存多少.txt

    方法一: 要加单元 PsAPI
    procedure TForm1.tmr1Timer(Sender: TObject);
    begin
     edt1.Text:= format('memory use: %d KB', [GetProcessMemUse(GetCurrentProcessId)]);//方法一
    end;
    
    function TForm1.GetProcessMemUse(PID: Cardinal): Cardinal;    //方法一
    var
    pmc: PPROCESS_MEMORY_COUNTERS; //uses psApi
    ProcHandle: HWND;
    iSize: DWORD;
    begin
      Result := 0;
      iSize := SizeOf(_PROCESS_MEMORY_COUNTERS);
      GetMem(pmc, iSize);
      try
        pmc^.cb := iSize;
        ProcHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,
        False, PID); //由PID取得进程对象的句柄
        if GetProcessMemoryInfo(ProcHandle, pmc, iSize) then
        Result := pmc^.WorkingSetSize;
        Result :=Result div 1024;
      finally
        FreeMem(pmc);
      end;
    end;
    
    //*********************************************
    
    方法二:要加单元 PsAPI, Tlhelp32;
    procedure TForm1.tmr1Timer(Sender: TObject);
    var
     str,str2:string;
    begin
     if (GetProcessMemorySize('proj1.exe',str,str2)) then    //方法二 参数要写程序名,不好
      begin
        edt2.Text :='当前内存使用:'+ str +'KB';
      end; 
    end;
    function TForm1.GetProcessMemorySize(ProcessName: string; var Size,    //方法二
      PN: string): Boolean;
    var
    pProcess:THandle;
    MemSize,t:Integer;
    hProcSnap:THandle;
    PPMCSize:Cardinal;
    pe32:TProcessEntry32;
    PPMC:PPROCESS_MEMORY_COUNTERS;
    begin
    
      PPMCSize := SizeOf(PROCESS_MEMORY_COUNTERS);
      GetMem(PPMC, PPMCSize);
      PPMC^.cb:= PPMCSize;
    
      hProcSnap:=CreateToolHelp32SnapShot(TH32CS_SNAPALL,  0);
      if  hProcSnap=INVALID_HANDLE_VALUE  then  Exit;
      pe32.dwSize:=SizeOf(ProcessEntry32);
      if  Process32First(hProcSnap,pe32)=True then
          while  Process32Next(hProcSnap,pe32)=True  do
          begin
              if uppercase(pe32.szExeFile)=uppercase(ProcessName) then
              begin
                pProcess:=OpenProcess(PROCESS_ALL_ACCESS,FALSE, pe32.th32ProcessID);
    
                if (GetProcessMemoryInfo(pProcess,PPMC,PPMCSize)) then
                 begin
                   MemSize:=PPMC^.WorkingSetSize div 1024;
                   t:= Length(IntToStr(MemSize))-2;
                   Size:=IntToStr(MemSize);
                   Insert(',',Size,t);
                   PN:=ProcessName;
                   FreeMem(PPMC);
                   Result:=True;
                 end
                else
                 begin
                   FreeMem(PPMC);
                   Result:=False;
                 end;
    
              end;
          end;
      CloseHandle(pProcess);
      CloseHandle(hProcSnap);
    end;
    

      

  • 相关阅读:
    用鼠标滚轮做事件
    0927 匿名函数,隐藏显示层
    好友选中
    bzoj:1687;poj 2434:[Usaco2005 Open]Navigating the City 城市交通
    bzoj:1659: [Usaco2006 Mar]Lights Out 关灯
    bzoj:3392: [Usaco2005 Feb]Part Acquisition 交易
    bzoj:1723: [Usaco2009 Feb]The Leprechaun 寻宝
    poj 2434;bzoj 1686 [Usaco2005 Open]Waves 波纹
    bzoj:3397 [Usaco2009 Feb]Surround the Islands 环岛篱笆
    bzoj:3400 [Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队
  • 原文地址:https://www.cnblogs.com/rogge7/p/4422148.html
Copyright © 2011-2022 走看看