最近碰到一个比较郁闷的事情,我们公司一个地方的电脑非常烂,烂到只能装98系统内存128M,刚好操作电脑的人又是一个老太婆不怎么会用鼠标,有时候点点点,就点出N个程序导致直接死机。。

 

解决方法,根据GlobalMemoryStatus判断物理内存大小

              用CreateToolhelp32Snapshot历遍系统运行的进程和线程

procedure TfrmMain.FormCreate(Sender: TObject);
var lppe:  TProcessEntry32;
  found :  boolean;
  Hand  :  THandle;
  i     :  Integer ;
  ms    :  TMemoryStatus;
begin
  GlobalMemoryStatus(ms);      //检测内存状态
  if ms.dwTotalPhys div (1024*1024)<256 then //检测内存,小于256的只能运行2个程序
    begin
    i:=0;
    Hand := CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);//历遍系统运行的进程和线程
    found := Process32First(Hand,lppe);   //根据获得的句柄得到进程名
    while found do//执行循环
    begin
      if Trim(StrPas(lppe.szExeFile))='GFWzck.exe' then
      i:=i+1;
      if i>2 then
      Application.Terminate;
      found := Process32Next(Hand,lppe); //下一进程
    end;
 end;