在MFC中有一个从我的程序中生成的可执行文件,我想使用它作为打开.jpg文件的默认程序。也就是说,每当我双击一个.jpg文件,我的程序就会运行。
我尝试添加一些将.jpg文件与我的程序链接起来的注册表项,例如HKEY_CLASSES_ROOT\.jpg\shell\open\command (将其值设置为"myProgram.exe" "%1")和HKEY_CLASSES_ROOT\myProgram。
该方法工作得很好,除非其他一些应用程序注册自己打开.jpg文件。例如,我已经在我的计算机上安装了acdSee,所以每次双击.jpg文件时,它总是启动acdSee而不是我自己的程序。但是当我在我的程序中注册一个全新类型的文件时,它可以在程序中打开。我不知道如何以编程方式将我的程序设置为已注册文件的默认打开程序。有人能帮我解决这个问题吗?非常感谢!
发布于 2008-11-25 03:25:31
更典型/更标准的方法是将".jpg“键的默认值设置为一个可以更清楚地标识文件类型的名称,然后在那里设置各种相关的操作。因此,对于jpgs,您可以这样做:
HKCR\.jpg
@default = MyApp.JpegImage
HKCR\MyApp.JpegImage\shell\open\command
@default = "myApp.exe "%1""如果其他程序决定注册该类型,它们将用其他值替换HKCR.jpg的默认值,如OtherProgram.Jpg。此时,您可以通过将值重新设置为MyApp.JpegImage来将其重新注册到您的应用程序。
免责声明:在进行此类更改时,还请尝试尊重用户的首选项。例如,在安装应用程序时,给用户设置或不设置此文件关联的选项。如果用户希望这样做,您还可以从已安装的应用程序内部提供一个命令来重置关联。
如果您想要向现有的已注册类型添加一些额外的命令,则可以读取.jpg键的默认值来查找文件类型的名称。然后,您可以打开该键并将一个操作添加到现有的操作集。例如,您可以添加以下内容:
HKCR\ExistingApp.JpegImage\shell\myopen\
@default = "Open with MyApp"
HKCR\ExistingApp.JpegImage\shell\myopen\command\
@default = "myApp.exe "%1""发布于 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)!
https://stackoverflow.com/questions/316204
复制相似问题