最近碰到一个比较郁闷的事情,我们公司一个地方的电脑非常烂,烂到只能装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;