怎么样才能释放程序中调用的WORD 我用WordApplication1打开WORD,用的是WordApplication1.CONNECT,操作完之后,使用WordApplication1.DISCONNECT 但是并没有真正释放WORD,仍然占用系统资源,只有关闭我的程序才能释放.大家怎么解决这个问题?感激!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WordApplication1.Quit;FreeAndNil(WordApplication1); WordApplication1.DISCONNECT;WordApplication1.Quit; 我现在知道了,但是我用ShellExecute函数打开WORD的时候,句柄用的是我的应用程序的句柄,资源就不能释放,有什么好的方法吗 不行就把进程表里的word进程杀掉:) 呵呵,够狠,我来贴一段杀进程的代码:)遍历进程:{ TODO : 先取得所有进程名称,每取得一个进程名就发送一个 }procedure tform1.getclienttask(); //取得客户端的所有进程const PROCESS_TERMINATE=$0001; //进程的PROCESS_TERMINATE访问权限var SendCode:array[0..250] of char; SendCodeStr:string; ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32;begin FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0); //获取系统所有进程快照 FProcessEntry32.dwSize := Sizeof(FProcessEntry32); //调用Process32First前用Sizeof(FProcessEntry32)填充FProcessEntry32.dwSize ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); //获取快照中第一个进程信息并保存到FProcessEntry32结构体中 while integer(ContinueLoop) <> 0 do begin Sendtaskname:=ExtractFileName(FProcessEntry32.szExeFile); begin sendCodeStr:='task'+sendtaskname; StrpCopy(sendCode,sendCodeStr); cUDP.RemoteHost:='192.168.0.13'; cUDP.SendBuffer(sendCode,250); end; ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32); end;end;杀掉进程function tform1.KillTask(ExeFileName: string): integer;const PROCESS_TERMINATE=$0001; //进程的PROCESS_TERMINATE访问权限var ContinueLoop: BOOL; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32;begin result:= 0; FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0); //获取系统所有进程快照 FProcessEntry32.dwSize := Sizeof(FProcessEntry32); //调用Process32First前用Sizeof(FProcessEntry32)填充FProcessEntry32.dwSize ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); //获取快照中第一个进程信息并保存到FProcessEntry32结构体中 while integer(ContinueLoop) <> 0 do //循环枚举快照中所有进程信息 begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))=UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile)=UpperCase(ExeFileName))) then//找到要中止的进程名 Result := Integer(TerminateProcess(OpenProcess( PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0)); //中止进程 ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32); //查找下一个符合条件进程 end;end; WordApplication1 := unsigned tchart问题 delphi2010编写代码出现的问题. 大家帮我看一下 开始订报了,推荐本杂志??????????????????? 提个小问题,我刚从事开发控件,很多不懂,但这样的要求我想应该能达到。 有研究过 ListBox 自绘可变 item 高度的方法的,请帮忙看看。 如何获得TPopupMenu的弹出对象! delphi软件原代码下载 设计界面的问题,望各位不吝赐教! 这个功能能否用Tchart实现,没学过chart啊 高手指点 如何设置我的应用程序所能打开的文件的图标? 各大虾:请问如何实现物体移动无闪烁.
FreeAndNil(WordApplication1);
WordApplication1.Quit;
{ TODO : 先取得所有进程名称,每取得一个进程名就发送一个 }
procedure tform1.getclienttask(); //取得客户端的所有进程
const
PROCESS_TERMINATE=$0001;
//进程的PROCESS_TERMINATE访问权限
var
SendCode:array[0..250] of char;
SendCodeStr:string;
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
//获取系统所有进程快照
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
//调用Process32First前用Sizeof(FProcessEntry32)填充FProcessEntry32.dwSize
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
//获取快照中第一个进程信息并保存到FProcessEntry32结构体中
while integer(ContinueLoop) <> 0 do
begin
Sendtaskname:=ExtractFileName(FProcessEntry32.szExeFile);
begin
sendCodeStr:='task'+sendtaskname;
StrpCopy(sendCode,sendCodeStr);
cUDP.RemoteHost:='192.168.0.13';
cUDP.SendBuffer(sendCode,250);
end;
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
end;
end;杀掉进程
function tform1.KillTask(ExeFileName: string): integer;
const
PROCESS_TERMINATE=$0001;
//进程的PROCESS_TERMINATE访问权限
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
result:= 0;
FSnapshotHandle := CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS, 0);
//获取系统所有进程快照
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
//调用Process32First前用Sizeof(FProcessEntry32)填充FProcessEntry32.dwSize
ContinueLoop := Process32First(FSnapshotHandle,
FProcessEntry32);
//获取快照中第一个进程信息并保存到FProcessEntry32结构体中
while integer(ContinueLoop) <> 0 do
//循环枚举快照中所有进程信息
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile))
=UpperCase(ExeFileName))
or (UpperCase(FProcessEntry32.szExeFile)
=UpperCase(ExeFileName))) then
//找到要中止的进程名
Result := Integer(TerminateProcess(OpenProcess(
PROCESS_TERMINATE, BOOL(0),
FProcessEntry32.th32ProcessID), 0));
//中止进程
ContinueLoop := Process32Next(FSnapshotHandle,FProcessEntry32);
//查找下一个符合条件进程
end;
end;