关于只让程序在一个桌面上运行的问题,

mishuilin 2005-08-01 05:57:55
现在有一个程序,我修改了注册表,让它开机就自动运行!

这样程序在用户登陆的时候就运行了,

但是出现了这样一个问题

即当有远程用户连接本机时,这个程序又会有一个新的实例被创建,运行在远程登陆的界面上?
当有多个用户登陆,就会有多个相同的程序在运行,这不是我想要的,我想要只有一个实例在运行。
有什么办法解决这个问题呢?


还有一个我有什么办法能指定这个程序只在本机运行,或者只在远程登陆的一个用户处运行呢?

请高手指教,
...全文
137 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mishuilin 2005-08-02
  • 打赏
  • 举报
回复
对于程序只运行一个实例已经实现!
使用如下代码:
HANDLE hMutexOneInstantance=CreateMutex(NULL,TRUE,_T("PreventSecondInstance"));
if(GetLastError()==ERROR_ALREADY_EXISTS)
bFound=TRUE;
if(hMutexOneInstantance)
ReleaseMutex(hMutexOneInstantance);
if (bFound==TRUE)
{
::AfxMessageBox("你已经运行了一个实例");
CDialog::OnCancel();
return false;
}

现在就是关于指定程序是在本机运行,还是只在远程桌面运行的问题,

首先这个不通过修改注册表实现,而是通过对程序的配置实现,也就是程序有个配置参数,让程序自己根据这个参数来判断程序能否启动?


我不会的是怎样判断运行这个程序的桌面是远程用户,还是本机用户。
谢谢!
xiao_xiao_zi 2005-08-02
  • 打赏
  • 举报
回复
启动时先搜索一下当前进程看看
afx_swallow 2005-08-02
  • 打赏
  • 举报
回复
程序初始化的时候判断一下有没有实例在运行
有则退出
没有则继续
jixingzhong 2005-08-02
  • 打赏
  • 举报
回复
把注册表恢复


用 其他的办法在本地开机运行程序


比如 用 启动 文件夹

或者自己建立一个 .BAT 文件

或者修改一下培植文件

都可以的呀!



这样的话

其他机器应该不会也运行这样的程序了 ...
mishuilin 2005-08-02
  • 打赏
  • 举报
回复
弄错了,我上面的程序,在一个桌面上是只能运行一个实例,但不同的用户登陆或者相同的用户多处登陆电脑都能运行这个程序,我不是我想的,我想要就在我的电脑上运行一个实例。不是一个桌面运行一个实例,请高手指教!
LoveYouJustOneDay 2005-08-01
  • 打赏
  • 举报
回复
你修改的注册表里面

修改的如果是 localmachine 或者 .default 里面的run
自然会这样了

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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