Delphi一台电脑只能打开一个我们开发的程序

业务是这样:我们开发了一个程序,我登录这个程序后,比如我隐藏到系统托盘了,然后我再去开一个这个程序,但是一台电脑不能启动多个,所有再打开时就直接把隐藏在托盘的那个弹出来 这个有办法实现吗? 望指导,谢谢

第1个回答  2013-03-05
不允许多个实例百度一下 delphi程序只允许运行一个实例的三种方法
可以直接用第二种 查找窗口法(第三种全局原子法其实更好一些),然后检查到已经运行的话,对找到的句柄发送消息就行了
PostMessage(hwnd,WM_SYSCOMMAND, SC_MINIMIZE,0); //最小化
PostMessage(hwnd,WM_SYSCOMMAND, SC_MAXIMIZE,0);//最大化
PostMessage(hwnd,WM_SYSCOMMAND, SC_CLOSE,0);//关闭本回答被网友采纳
第2个回答  2013-03-05
遍历所有系统进程,看有没有你程序名称的进程,有则是已经创建了,弹出。没有就新创建。
第3个回答  2013-03-07
initialization
Project:='Examination_Server_Project'; //定义项目名称,作为互斥区名
mHandle:=CreateMutex(nil, true, pchar(Project));
if GetLastError=ERROR_ALREADY_EXISTS then
begin
messagedlg('已经有该程序的另一个实例在运行!', mtInformation, [mbok], 0);
Application.Terminate;
end;
finalization
if mHandle<>0 then
closeHandle(mHandle);
end.本回答被提问者采纳
第4个回答  2013-03-07
我以前的做法提写入状态到数据库,我在数据库里做记录。打开了和关闭的情况下写入的值不一样,然后我去判断这个值就可以 了。也可以遍历进程!
第5个回答  2013-03-05
设置多个用户 然后切换用户 不行就安装虚拟机追问

呃,不能是切换用户,

比如我是之前已经打开QQ登录了,然后隐藏到托盘了,当我再次点击桌面的QQ快捷方式的时候就是直接把已经登录的QQ面板弹出来显示在桌面,就是类似于这个样子;