将文件类型与正在运行的应用程序相关联

时间:2011-05-12 04:34:41

标签: c++ windows

我正在使用vs2005 c ++在Windows中开发一个应用程序,并希望将文件扩展名关联到我可以在注册表设置中执行的应用程序。但是,当我单击该文件时,我想将其与应用程序的运行实例相关联,而不是启动新应用程序。我怎样才能实现这种行为。

2 个答案:

答案 0 :(得分:1)

我不能在头脑中给你一个实现但是看一下所谓的“进程间通信”(如果你在windows上,通常使用COM)。你可以做的是,当你的程序启动时,检查自己的其他副本,如果它找到一个然后它告诉你想要打开哪个文件,然后自行关闭。

我找到了一个实现:

http://www.flounder.com/nomultiples.htm

答案 1 :(得分:1)

以前这是通过winmain中的参数完成的,但来自msdn

  

上一个应用程序实例的句柄。此参数始终为NULL。如果需要检测是否已存在其他实例,请使用CreateMutex函数创建唯一命名的互斥锁。即使互斥锁已经存在,CreateMutex也会成功,但该函数将返回ERROR_ALREADY_EXISTS。这表示您的应用程序的另一个实例存在,因为它首先创建了互斥锁。但是,恶意用户可以在执行此操作之前创建此互斥锁,并阻止您的应用程序启动。要防止出现这种情况,请创建一个随机命名的互斥锁并存储该名称,以便只能由授权用户获取。或者,您可以使用文件来实现此目的。要将应用程序限制为每个用户一个实例,请在用户的配置文件目录中创建一个锁定文件。