The GlobalMemoryStatus function retrieves information about current available memory. The function returns information about both physical and virtual memory. This function supersedes the GetFreeSpace function. VOID GlobalMemoryStatus(    LPMEMORYSTATUS lpBuffer  // pointer to the memory status structure  
   );
 ParameterslpBufferPoints to a MEMORYSTATUS structure in which information about current memory availability is returned. Before calling this function, the calling process should set the dwLength member of this structure.  Return ValuesThis function does not return a value. ResAn application can use the GlobalMemoryStatus function to determine how much memory it can allocate without severely impacting other applications. 
The information returned is volatile, and there is no guarantee that two sequential calls to this function will return the same information.

解决方案 »

  1.   

    获取内存信息Structure of TMemoryStatus:  TMemoryStatus = record
        dwLength: DWORD;
        dwMemoryLoad: DWORD;
        dwTotalPhys: DWORD;
        dwAvailPhys: DWORD;
        dwTotalPageFile: DWORD;
        dwAvailPageFile: DWORD;
        dwTotalVirtual: DWORD;
        dwAvailVirtual: DWORD;Function called to populate TMemoryStatus:procedure GlobalMemoryStatus(var lpBuffer: TMemoryStatus); stdcall;WINAPI help for said function:  VOID GlobalMemoryStatus(
        // pointer to the memory status structure
        LPMEMORYSTATUS  lpBuffer  
      ); Code for populating a TMemo with Information about system resources:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var
      MemoryStatus: TMemoryStatus;begin  Memo1.Lines.Clear;  MemoryStatus.dwLength := SizeOf(MemoryStatus);  GlobalMemoryStatus(MemoryStatus);  with MemoryStatus do
      begin
    // Size of MemoryStatus record
        Memo1.Lines.Add(IntToStr(dwLength) +
          ' Size of ''MemoryStatus'' record');
    // Per-Cent of Memory in use by your system
        Memo1.Lines.Add(IntToStr(dwMemoryLoad) +
          '% memory in use');
    // The amount of Total Physical memory allocated to your system.
        Memo1.Lines.Add(IntToStr(dwTotalPhys) +
          ' Total Physical Memory in bytes');
    // The amount available of physical memory in your system.
        Memo1.Lines.Add(IntToStr(dwAvailPhys) +
          ' Available Physical Memory in bytes');
    // The amount of Total Bytes allocated to your page file.
        Memo1.Lines.Add(IntToStr(dwTotalPageFile) +
          ' Total Bytes of Paging File');
    // The amount of available bytes in your page file.
        Memo1.Lines.Add(IntToStr(dwAvailPageFile) +
          ' Available bytes in paging file');
    // The amount of Total bytes allocated to this program
    // (generally 2 gigabytes of virtual space).
        Memo1.Lines.Add(IntToStr(dwTotalVirtual) +
          ' User Bytes of Address space');
    // The amount of avalable bytes that is left to your program to use.
        Memo1.Lines.Add(IntToStr(dwAvailVirtual) +
          ' Available User bytes of address space');
      end; // with
    end; // procedureend.
      

  2.   

    有没有得到Cpu使用率的啊
    最好有详细的代码!
      

  3.   

    //==============================================================================
    //获得CPU速度****************************************************************
    //==============================================================================
    function GetCPUSpeed: Double;
    const DelayTime = 500;
    var TimerHi, TimerLo: DWORD;
        PriorityClass, Priority: Integer;
    begin
      try
        PriorityClass := GetPriorityClass(GetCurrentProcess);
        Priority := GetThreadPriority(GetCurrentThread);
        SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
        SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);
        Sleep(10);
        asm
          DW 310FH //rdtsc
          MOV TimerLo, EAX
          MOV TimerHi, EDX
        end;
        Sleep(DelayTime);
        asm
          DW 310FH //rdtsc
          SUB EAX, TimerLo
          SBB EDX, TimerHi
          MOV TimerLo, EAX
          MOV TimerHi, EDX
        end;
        SetThreadPriority(GetCurrentThread, Priority);
        SetPriorityClass(GetCurrentProcess, PriorityClass);
        Result := TimerLo / (1000.0 * DelayTime);
      except
        Result := 0;
      end;
    end;//==============================================================================
    //获得内存状态******************************************************************
    //==============================================================================
    function GetMemoryStatus:TMemoryStatus;
    begin
      ZeroMemory(@Result,SizeOf(Result));
      Result.dwLength:=SizeOf(Result);
      GlobalMemoryStatus(Result);
      {内存状态 type TMemoryStatus = record
                                       dwLength: DWORD;
                                       dwMemoryLoad: DWORD;
                                       dwTotalPhys: DWORD;
                                       dwAvailPhys: DWORD;
                                       dwTotalPageFile: DWORD;
                                       dwAvailPageFile: DWORD;
                                       dwTotalVirtual: DWORD;
                                       dwAvailVirtual: DWORD;
                                     end;
      }
    end;
      

  4.   

    谢谢以上的朋友
    能不能再看看
    http://www.csdn.net/expert/topic/590/590872.xml?temp=.2612574