CreateMutex、FindSingleObject等函数在2000下不能用吗?(100分)

  • 主题发起人 主题发起人 ETimeFly
  • 开始时间 开始时间
E

ETimeFly

Unregistered / Unconfirmed
GUEST, unregistred user!
我的用户告诉我我的程序在2000下不能正常运行,是不是因为这个原因呢?怎么解决?
 
不是吧,2000是支持这些函数的.
 
有这个API吗???
FindSingleObject
 
真的吗?我没有2000系统,请好心人帮忙测试一下!!
我的程序其实很简单,在主Form中:(我想禁止运行多个拷贝)
procedure TForm1.FormShow(Sender: TObject);
var
hMutex,waiting:Cardinal;
begin

hMutex:=CreateMutex(Nil,False,'TheMutex');
waiting:=WaitForSingleObject(hMutex,0);
if waiting=wait_timeout then
begin
releaseMutex(hMutex);
showmessage('This Application is already runing!');
close;
end;
end;
 
应该为:
hMutex:=CreateMutex(Nil,False,'TheMutex');
waiting:=GetLastError;
if waiting=ERROR_ALREADY_EXISTS then
begin
releaseMutex(hMutex);
showmessage('This Application is already runing!');
exit;
end;
而且程序应该放在你porject单元里
 
要在运行完后ReleaseMutex(hMutex)
如果你的程序未能正常结束(不能运行如上所示)则你的程序不能再运行第二次。
 
CreateMutex()在创建一个已经存在的Mutex时,会怎样反应?
除了设置GetLastError外还做什么?DELPHI的帮助我看不懂!!
 
HHHHHHHHHHHHELP~~~~!!!!!
 
绝对可以用,我用的很正常,
>>CreateMutex()在创建一个已经存在的Mutex时,会怎样反应?
>>除了设置GetLastError外还做什么?
呵呵,老大,你去设置GetLastError()有没有搞错啊?
应该你通过知道前一个API出错的原因才对!
 
楼上的,请说清楚一点好吗?先谢谢了。
 
hMutex:=CreateMutex(Nil,False,'TheMutex');
if hMutex<>INVALID_HANLE_VALUE then
if GetLastError=ERROR_ALREADY_EXISTS then
begin
OpenMutex();//这个时候可以打开这个互斥,
end
else
Exit;
 
谢谢!!
 
多人接受答案了。
 
后退
顶部