我想检测当前系统是否有WORD等应用软件在运行,如果有,则强行关闭,如何实现?(50分)

  • 主题发起人 主题发起人 lygzerg
  • 开始时间 开始时间
L

lygzerg

Unregistered / Unconfirmed
GUEST, unregistred user!
如题.
主要是检测当前系统打开了word excel等软件,如果有就把这些用程序强行关闭,我在一个考试系统中遇到的问题,谢谢大家帮忙,急,在线等.
 
uses paspi;

procedure TForm1.Button1Click(Sender: TObject);
var
Processesid:array[0..1023] of DWORD;
hMod:array[0..1023] of HMODULE;
FileName:array[0..MAX_PATH] of Char;
cbNeeded,size1:DWORD;
i:Integer;
hProcess:THandle;
begin
//获取进程信息的id
if not EnumProcesses(@Processesid[0],sizeof(Processesid),cbNeeded) then Exit;
size1:=cbNeeded div sizeof(DWORD);
for i:=0 to size1-1 do
begin
hProcess:=OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,Processesid);
if hProcess<>0 then
begin
//煤举进程信息
if EnumProcessModules(hProcess,@hMod[0],SizeOf(hMod),cbNeeded) then
begin
//获取进程信息名称
GetModuleFileNameEx(hProcess,hMod[0],@FileName[0],sizeof(FileName));
//如果进程信息名称于规定名称相同,干掉该程序
if UpperCase(ExtractFileName(FileName))='WINWORD.EXE' then
begin
TerminateProcess(hProcess,0);
Exit;
end;
end;
end;
//释放据宾
CloseHandle(hProcess);
end;
可以使Timer进行检测,在此处添加预关闭的对象:UpperCase(ExtractFileName(FileName))='WINWORD.EXE'
给分吧,呵呵![:D]
 
谢谢,可以加点注释吗,我是新手
 
已经添加注释
 
接受答案了.
 
后退
顶部