为什么我的任务管理器里面清除不掉这个进程?(100分)

  • 主题发起人 主题发起人 talentboy
  • 开始时间 开始时间
T

talentboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用OLEContainer控件,在程序运行的时候使用CreateObjectFromFile函数打开了一个Word文件,但是每次我的程序关闭的时候,我发现任务管理器中还存在一个WinWORD的进程,下次运行程序的时候会因为这个进程而导致程序错误,我应该如何清除这个进程?
 
function KillProcess(ProcsName:String;CaseFlag:Boolean=false):Boolean;
var
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
ProcessID: Integer;
ProcessHndle: THandle;
ContinueLoop: BOOL;
ItemName, ItemFile: String;
Condition : boolean;
begin
result:= false;
try
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop)<>0 do begin
ItemFile := ExtractFileName(FProcessEntry32.szExeFile);
ProcessID := FProcessEntry32.th32ProcessID;
ItemName := FProcessEntry32.szExeFile;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
if CaseFlag then
Condition := (UpperCase(ItemFile) = uppercase(ProcsName)) or (UpperCase(ItemName) = uppercase(ProcsName))
else
Condition := (ItemFile = uppercase(ProcsName)) or (ItemName = uppercase(ProcsName)) ;
if Condition then begin
ProcessHndle := OpenProcess(PROCESS_TERMINATE, BOOL(0), ProcessID);
Result:= TerminateProcess(ProcessHndle, 0) ;
end;
end;
except
exit;
end;
end;

//CaseFlag 是决定打小敏感的开关.ProcsName是你的进程名.
你用KillProcess('WINWORD');试试.
 
后退
顶部