实际上,可以枚举当前所有进程的所有模块,查找是否有这个文件被使用,但是我不知道是否有文件被使用,但是却在所有进程的所有模块中没有此文件!
你可以试试,如果采用这种方法你需要使用以下函数:(可以在msdn中查找详细帮助)
EnumProcesses
EnumProcessModules
GetModuleFileNameExA
等!
你可以试试,如果采用这种方法你需要使用以下函数:(可以在msdn中查找详细帮助)
EnumProcesses
EnumProcessModules
GetModuleFileNameExA
等!
解决方案 »
- [Pascal Fatal Error] E2202 Required package 'visualclx' not found
- 散分200
- menggirl(看天上浮云,胜似闲庭信步) 近来接分,有关oracle的
- 妈的,微软居然骗人了。
- 急~~~~关于delphi的MDIFROM与mainfrom的问题~~~~~
- showmessage()
- 关闭进程的问题?
- 怪事年年有,今年特别多
- sql server 与 my sql 有什么不同(讲明白就给分)。
- 在使用webbrowser控件时,如何不让它弹出script窗口?
- delphi如何起动word并自动调用一个已定义的宏?
- 哪位大侠能告诉我怎样利用mci在程序中录制声音文件(wav)?
费尽点的,要用到tlhelp32里的函数,好像是什么系统快照
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}
function IsFileInUse(fName : string ) : boolean;
var
HFileRes : HFILE;
begin
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);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Not OpenDialog1.Execute then Exit;
if IsFileInUse(OpenDialog1.FileName ) then
begin
ShowMessage('File in use');
end
else
begin
ShowMessage('File not in use');
end;
end;end.
“var
HFileRes : HFILE; ”中HFILE是什么类型啊?我查了半天DELPHI的帮助都没找到。
可否指教?
你的算法的思想是不是如果文件已经在运行则无法打开?运行中的文件是被保护的,是吗?
那如果因为别的原因致使打开文件失败,是不是你的算法就不够严密了?
小弟纯属菜鸟,只是请教一下,见笑了!
那请问在哪里可以找到关于它得详细介绍那?Delphi的help中有嘛?
它是不是属于windows SDK的内容阿?