仅允许单个实例应用程序的单个Windows消息框

时间:2015-10-26 12:38:33

标签: c++ windows

我有一个小型Windows应用程序,只允许运行一次。使用Windows互斥锁(CreateMutex)完成单实例检查。

应用程序应将已经运行的应用程序置于最前面并向用户显示信息消息。

使用Windows的MessageBox功能创建信息消息。但是,每次我尝试启动应用程序的新实例时,都会创建一个新的消息框(允许我打开数百个消息框)。

有没有办法将消息框的数量限制为一个(除了为消息框锁定另一个互斥锁)?

1 个答案:

答案 0 :(得分:0)

您的计划有三种状态:

  1. 正常(第一次),
  2. 通知第二次运行(第二次实例,现在显示有关它的消息框),
  3. 额外(超过第二个实例,知道显示消息框)。
  4. 对于第三状态的程序来说,静默退出似乎很容易。有很多方法可以做到这一点。并且由于您已经在使用互斥锁来检测第二个状态,因此也可以使用相同的逻辑来检测第三个状态。

    但你可以用另一种方式做到:

    1. 程序的第二个实例可以通知程序的第一个实例关于第二次运行并退出。
    2. 程序的主(第一)实例将在收到此类消息后显示消息框。在这种情况下,你的程序应该忽略所有这些消息,关闭当前消息框(以避免逐个显示这些消息框的匈牙利)。
    3. 从我的观点来看,第一种方法更好(即通过第二/第三/ ...程序实例显示消息框,并且仅在将主实例带到前面之后才显示消息框。)

相关问题