首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将应用程序设置为程序化打开某一类型文件的默认程序?

如何将应用程序设置为程序化打开某一类型文件的默认程序?
EN

Stack Overflow用户
提问于 2008-11-25 02:39:24
回答 2查看 7.3K关注 0票数 4

在MFC中有一个从我的程序中生成的可执行文件,我想使用它作为打开.jpg文件的默认程序。也就是说,每当我双击一个.jpg文件,我的程序就会运行。

我尝试添加一些将.jpg文件与我的程序链接起来的注册表项,例如HKEY_CLASSES_ROOT\.jpg\shell\open\command (将其值设置为"myProgram.exe" "%1")和HKEY_CLASSES_ROOT\myProgram

该方法工作得很好,除非其他一些应用程序注册自己打开.jpg文件。例如,我已经在我的计算机上安装了acdSee,所以每次双击.jpg文件时,它总是启动acdSee而不是我自己的程序。但是当我在我的程序中注册一个全新类型的文件时,它可以在程序中打开。我不知道如何以编程方式将我的程序设置为已注册文件的默认打开程序。有人能帮我解决这个问题吗?非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2008-11-25 03:25:31

更典型/更标准的方法是将".jpg“键的默认值设置为一个可以更清楚地标识文件类型的名称,然后在那里设置各种相关的操作。因此,对于jpgs,您可以这样做:

代码语言:javascript
运行
复制
HKCR\.jpg
   @default = MyApp.JpegImage
HKCR\MyApp.JpegImage\shell\open\command
   @default = "myApp.exe "%1""

如果其他程序决定注册该类型,它们将用其他值替换HKCR.jpg的默认值,如OtherProgram.Jpg。此时,您可以通过将值重新设置为MyApp.JpegImage来将其重新注册到您的应用程序。

免责声明:在进行此类更改时,还请尝试尊重用户的首选项。例如,在安装应用程序时,给用户设置或不设置此文件关联的选项。如果用户希望这样做,您还可以从已安装的应用程序内部提供一个命令来重置关联。

如果您想要向现有的已注册类型添加一些额外的命令,则可以读取.jpg键的默认值来查找文件类型的名称。然后,您可以打开该键并将一个操作添加到现有的操作集。例如,您可以添加以下内容:

代码语言:javascript
运行
复制
HKCR\ExistingApp.JpegImage\shell\myopen\
    @default = "Open with MyApp"
HKCR\ExistingApp.JpegImage\shell\myopen\command\
    @default = "myApp.exe "%1""
票数 2
EN

Stack Overflow用户

发布于 2008-11-25 04:46:59

请注意,通过将密钥写入HKCR,您实际上是在写入HKLM\Software\Classes。这将需要管理权限。但是,您可以通过将密钥写入HKCU\Classes\Root来在用户上下文中进行每个用户的更改。

此外,HKCU中的用户首选项将覆盖HKLM中的系统默认值,这听起来可能就是您的问题所在。

这是当程序没有将扩展注册为“默认”时(该程序是否列在“控制面板”中的“设置程序和默认值”中?)

开始阅读文档的时间(http://msdn.microsoft.com/en-us/library/cc144104(VS.85%29.aspx)!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/316204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档