已知文件名,如何知道它是被哪个程序/进程打开的,并关闭相应的程序或进程?

jiashenglv 2003-09-12 09:45:56
已知文件名(比如password.db),可能被'DBD32.exe'打开,也可能被用户自己开发的程序打开,如何知道它是被哪个程序/进程打开的,并关闭相应的程序或进程?

判断文件是否被其他程序打开:
var
HFileRes:HFILE;
Result:Boolean;
fName:string;
begin
fName:='d:\password.db';
Result:=false;
if not FileExists(fName) then
exit;
HFileRes:=CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,
0,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
Result:=(HFileRes=INVALID_HANDLE_VALUE);
if not Result then
CloseHandle(HFileRes)
else ShowMessage('文件正在被使用!');
end;

关闭DBD32进程:
uses
Tlhelp32;
...
var
Snap:THandle;
PPro:TPROCESSENTRY32;
h:Hwnd;
Found:Boolean;
begin
Snap:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
Found:=Process32First(Snap,PPro);
while Found do
begin
if UpperCase(ExtractFileName(PPro.szExeFile))='DBD32.EXE' then
begin
h:=OpenProcess(PROCESS_ALL_ACCESS,true,PPro.th32ProcessID);
TerminateProcess(h,0);
ShowMessage(IntToStr(h));
Caption:='Already Killed';
end;
Found:=Process32Next(Snap,PPro);
end;
end;

如何捕获password.db正在被其它程序(比如'Me.exe',该程序的名称是未知的)使用,并关闭该程序?

分数不够可以再加!!
...全文
180 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiashenglv 2003-09-17
  • 打赏
  • 举报
回复
To fengyvn & aiirii:
简单点说吧,在我的程序的FormCreate时,检查发现'password.db'已经
被别的程序或进程(不一定有窗体)打开,而且是独占地打开的。我想
关闭这个文件后继续运行我的程序。
aiirii 2003-09-17
  • 打赏
  • 举报
回复
jiashenglv(苦瓜) 提的,也不是很好的解決方法,期待有更好的解法
jiashenglv 2003-09-17
  • 打赏
  • 举报
回复
请版主删除此贴!!
jiashenglv 2003-09-17
  • 打赏
  • 举报
回复
我已经在大富翁论坛上送出了200分:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2180386。
遇到此类问题者请参阅:
http://www.szonline.net/content/2003/200308/20030806/198966.html。
由xianjun提供。
cnhgj 2003-09-17
  • 打赏
  • 举报
回复
findwindow(),然后杀掉那个进程不就可以了吗?
aiirii 2003-09-16
  • 打赏
  • 举报
回复
難,可能要從訪文件被打開的handle入手吧!!
fengyvn 2003-09-16
  • 打赏
  • 举报
回复
或者用简单点的办法.
如果只想知道打开些文件的进程,只需要在第一次打开时把这个进程命令行参数写入一个INI文件,
下一次打开时再读取就是了.
jiashenglv 2003-09-16
  • 打赏
  • 举报
回复
To fengyvn:
能不能给点详细的说明,有高分赠送!
fengyvn 2003-09-14
  • 打赏
  • 举报
回复
用消息机制.
蓝色光芒 2003-09-13
  • 打赏
  • 举报
回复
发错地方了,Sorry!!
蓝色光芒 2003-09-13
  • 打赏
  • 举报
回复
怎么觉得比较糊涂!!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧