2008-11-25 104 views
4

在MFC中有從我的程序生成的可執行文件,我想用它作爲默認程序打開.jpg文件。也就是說,每次我雙擊一個.jpg文件,我的程序就會運行。如何將應用程序設置爲以編程方式打開特定類型文件的默認程序?

我嘗試添加鏈接.jpg文件與我的程序,如HKEY_CLASSES_ROOT\.jpg\shell\open\command(其值設置爲"myProgram.exe" "%1")和HKEY_CLASSES_ROOT\myProgram一些註冊表項。

該方法工作得很好,除非某些其他應用程序註冊自己以打開.jpg文件。例如,我在我的電腦上安裝了acdSee,所以每次點擊一個.jpg文件時,它總是啓動acdSee而不是我自己的程序。但是當我用程序註冊一個全新類型的文件時,它可以在程序中打開。我不知道如何通過編程將我的程序設置爲已註冊文件的默認打開程序。任何人都可以幫我解決這個問題嗎?非常感謝你!

+0

重新標記 - 刪除了「C++」標記,因爲這與應用程序碰巧寫入的語言無關。添加了窗口,因爲註冊表條目具有很高的平臺特定性。 – 2008-11-25 03:50:43

+0

好的。非常感謝你 – user26404 2008-11-25 10:02:47

回答

2

執行此操作的更典型/標準方法是將「.jpg」鍵的默認值設置爲更清晰地標識文件類型的名稱,然後在其中設置各種關聯的操作。因此,對於JPG格式,你可以這樣做:

HKCR\.jpg 
    @default = MyApp.JpegImage 
HKCR\MyApp.JpegImage\shell\open\command 
    @default = "myApp.exe "%1"" 

如果一些其他程序決定註冊類型,他們將與其他一些值,比如OtherProgram.Jpg更換爲HKCR.jpg的默認值。此時,您可以通過將值重新設置爲MyApp.JpegImage將其重新註冊到您的應用程序。

免責聲明:在進行此類更改時,請儘量尊重用戶的偏好。例如,在安裝你的應用程序時,給用戶選擇設置這個文件關聯或者不設置它。如果用戶希望這樣做,您也可以從已安裝的應用程序中提供命令來重置關聯。

如果您不想在現有註冊類型中添加一些附加命令,則應該讀取.jpg鍵的默認值以查找文件類型的名稱。然後,您可以打開該鍵並將操作添加到現有的一組操作中。例如,您可以添加以下內容:

HKCR\ExistingApp.JpegImage\shell\myopen\ 
    @default = "Open with MyApp" 
HKCR\ExistingApp.JpegImage\shell\myopen\command\ 
    @default = "myApp.exe "%1"" 
+0

對不起。我已經完成了你所說的一切。但是問題依然存在...... – user26404 2008-11-25 08:58:16

0

請注意,通過向HKCR寫入密鑰,您實際上正在寫入HKLM \ Software \ Classes。這將需要管理權限。但是,您可以通過將密鑰寫入HKCU \ Classes \ Root來改變用戶上下文中的每個用戶的更改。

此外,HKCU中的用戶首選項將覆蓋HKLM中的系統默認值,這聽起來像是您的問題所在。

這是當一個程序還沒有註冊的擴展爲「默認」(在控制面板中設置程序和默認值列出的程序?)

時候開始reading documentation

相關問題