註冊檔案型別,並關聯程式(一)

2022-03-28 13:38:00 字數 1541 閱讀 8206

在windows上,不同的副檔名會顯示不同的圖示。但是如果你的程式使用了自己定義的一種副檔名(比如.guo),windows發現其為「未知型別」時,會顯示乙個預設的未知型別圖示,既不好看又不容易在一堆檔案中快速找到你的檔案。

所以,本文將介紹怎麼通過登錄檔來實現更改檔案的預設圖示。

以.guo型別為例:

副檔名

.guo

預設圖示

d:\bin\guo.ico

描述 我的guo檔案(「描述」將會顯示在explorer詳細列表中的「型別」列)

開啟程式

d:\bin\guo.exe

在c#中只需要執行:

registry.setvalue(@"

hkey_classes_root\.guo

", "", "

myguo

");//

此為加入的檔案型別副檔名與別名

registry.setvalue(@"

hkey_classes_root\myguo

", "", "

我的guo檔案

");//

設定檔案型別的「描述」

registry.setvalue(@"

hkey_classes_root\myguo\defaulticon

", "", @"

d:\bin\guo.ico

"); //

圖示registry.setvalue(@"

hkey_classes_root\myguo\shell\open\command

", "", "

d:\\bin\\guo.exe \"%1\"

");//

關聯程式

即可為.guo檔案建立預設圖示和預設關聯程式。其中myguo是.guo的別名。

在command中,%1代表的是輸入檔名,比如你雙擊d:\bin\a.guo檔案,就相當於執行了這樣的命令列:

d:\bin\guo.exe 「d:\bin\a.guo」

這樣,guo.exe在啟動的同時,就可以通過static void main(string args)裡的args引數獲取到檔案路徑了。 

在你執行了以上**之後,你會發現,explorer裡面的.guo檔案圖示並沒有改變,那是因為你需要重啟explorer或者計算機才能生效。那麼有沒有不需要重啟就能實時生效的辦法呢?有,我們使用api實現: 

[system.runtime.interopservices.dllimport("

shell32.dll")]

public

static

extern

void shchangenotify(uint weventid, uint uflags, intptr dwitem1, intptr dwitem2);

然後在上面的**後面加上這句:

shchangenotify(0x8000000, 0, intptr.zero, intptr.zero);

你看到了什麼?

註冊檔案型別,並關聯程式(三)

雙擊乙個txt檔案,就能用記事本開啟,因為txt檔案關聯了記事本程式。想讓你自定義的檔案型別也通過雙擊就能直接呼叫你的程式並開啟?ok,首先我們找到第一期,看到其中的這行 registry.setvalue hkey classes root myguo shell open command d b...

註冊檔案型別,並關聯程式(二)

registry.setvalue hkey classes root myguo defaulticon d bin guo.ico 怎麼把ico檔案打包 編譯 到exe檔案中,請參看 將多個圖示檔案編譯到c 程式中 假設我們把兩個ico檔案編譯到了guo.exe檔案中,第乙個作為exe的預設圖示...

註冊檔案型別,關聯檔案

bool function registerfiletype lpctstr houzhui,lpctstr fmiaoshu,lpctstr wmiaoshu,lpctstr filepath hkey hkey null dword dwdip 0 lptstr newreg new tchar...