我正在使用vs2005 c + +开发一个应用程序,并希望将文件扩展名关联到我可以在registry设置中执行的应用程序。 但是,当我单击文件时,我想将其与正在运行的应用程序实例关联,而不是启动一个新的。 我怎样才能实现这一行为。
方法为“之后”button点击
导出Java Scala项目时,无法获得scala / ScalaObject
使用带有空值的命令将csv文件按三列sorting?
使用适用于Android和iOS的Windows C ++
我不能给你一个实现我的头顶,但看看“进程间通信”(通常如果你在Windows上使用COM)的东西。 你可以做的是,当你的程序启动时,检查自己的其他副本,如果它发现一个,那么它告诉你一个你想要的文件打开,然后关闭。
我为你找到了一个实现:
http://www.flounder.com/nomultiples.htm
这曾经是用winmain中的一个参数来完成的,但是来自msdn
前一个应用程序实例的句柄。 该参数始终为NULL。 如果需要检测另一个实例是否已经存在,请使用CreateMutex函数创建一个唯一命名的互斥锁。 即使互斥量已经存在,CreateMutex也会成功,但函数将返回ERROR_ALREADY_EXISTS。 这表明应用程序的另一个实例存在,因为它首先创建了互斥锁。 但是,恶意用户可以在创建该互斥锁之前创建该互斥锁,并阻止您的应用程序启动。 为了防止出现这种情况,请创建一个随机命名的互斥体并存储名称,以使其只能由授权用户获取。 或者,您可以使用一个文件来达到这个目的。 要将您的应用程序限制为每个用户一个实例,请在用户的配置文件目录中创建一个锁定的文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。