我在工程代码中加入了程序是否已经运行的判断,如果程序已经运行则跳出对话框"是否退出程序?"按确定则退出,而退出的代码我用了ExitProcess(0); Application.Terminate;都不管用,程序照样运行得好好的,谁知道应该怎样退出?或者怎样让它触发formclose事件呢?
解决方案 »
- 有关delphi类的构造函数
- WH_GETMESSAGE怎么勾全局消息?
- 程序到笔记本的问题
- 高人们.请进来讲讲这段代码是什么意思;小弟不甚懂?{详细点}谢谢
- 一个关于控件的简单问题,解决就结贴
- 我在类型库中定义了几个接口,在每个接口下面定义了一些方法,但是客户端只能调用缺省的接口方法,而其它的就不行了,报告说接口没有定义
- 急!急!急!:请问ToolBar2000控件能使用Menu组件吗?
- 为什么用SQL对数据库排序后,所返回的结果不能编辑了?!?!?
- 闽糷挡篶祘秨祇
- 一个简单而奇怪的问题-求救!dephi中字符串处理。。。
- 哪位高手帮忙看一下这个错误应该怎么改啊
- 如果利用一个函数获得一个表格中有多少个条目
hMutex := CreateMutex(nil, False, 'SSS');
Ret := GetLastError;
if Ret <> ERROR_ALREADY_EXISTS then
begin
Application.CreateForm(TFmMain, FmMain);
Application.CreateForm(TFmAbout, FmAbout);
Application.Run;
end
else
Application.Terminate;
ReleaseMutex(hMutex);
Ret := GetLastError;
if Ret <> ERROR_ALREADY_EXISTS then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
begin
if Application.MessageBox('程序已经运行,是否退出?', '提示!', MB_OKCANCEL or MB_ICONWARNING or MB_DEFBUTTON2)=2 then exit;
Application.Terminate;
ReleaseMutex(hMutex0);
end;我只是加了一个对话框,我试过去掉对话框提示也一样,程序还是无法退出,没有任何反应
if Ret <> ERROR_ALREADY_EXISTS then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
else
begin
if Application.MessageBox('程序已经运行,是否退出?', '提示!', MB_OKCANCEL or MB_ICONWARNING)=IDOK then
Application.Terminate
else
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end; ReleaseMutex(hMutex0);
如果这样都不行,那么就来个狠得:var
FPid: DWORD;
begin
GetWindowThreadProcessId(Application.Handle, FPid);
WinExec(PAnsiChar('TASKKILL.EXE /F /PID ' + IntToStr(FPid)), 0)
end;
PS:为什么要关闭第一个实例呢?难不成你第二个实例和第一个不一样????