2017-02-07 63 views
-1

我們可以將圖像或位圖設置爲創建或現有的文本,xml或word文件嗎?圖像到創建的文件

如果是這樣,請讓我知道如何設置位圖或圖像的文件。

我想更改文件的默認位圖。

enter image description here

問候, 阿邁勒

+0

你的意思是你想改變文件圖標? –

+0

是的。我想更改默認文件圖標。 – Amal

+2

如果你想創建或現有文件的不同圖標,那麼你可以編寫一個外殼擴展圖標處理程序:https://msdn.microsoft.com/en-us/library/windows/desktop/cc144122.aspx – PaulF

回答

0

要改變一個特定的文件擴展名的圖標,使用下面的代碼,進入註冊表中的所有需要​​的信息:

using Microsoft.Win32; 

// Associate file extension with progID, description, icon and application 
public static void Associate(string extension, string progID, string description, string icon, string application) 
{ 
    Registry.ClassesRoot.CreateSubKey(extension).SetValue("", progID); 
    if (progID!=null && progID.Length>0) 
     using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(progID)) 
     { 
     if (description!=null) 
      key.SetValue("", description); 
     if (icon!=null) 
      key.CreateSubKey("DefaultIcon").SetValue("", ToShortPathName(icon)); 
     if (application!=null) 
      key.CreateSubKey(@"Shell\Open\Command").SetValue("", ToShortPathName(application) + " \"%1\""); 
     } 
} 

// Return true if extension already associated in registry 
public static bool IsAssociated(string extension) 
{ 
    return (Registry.ClassesRoot.OpenSubKey(extension, false)!=null); 
} 

[DllImport("Kernel32.dll")] 
private static extern uint GetShortPathName(string lpszLongPath, [Out] StringBuilder lpszShortPath, uint cchBuffer); 

// Return short path format of a file name 
private static string ToShortPathName(string longName) 
{ 
    StringBuilder s = new StringBuilder(1000); 
    uint iSize = (uint) s.Capacity; 
    uint iRet = GetShortPathName(longName, s, iSize); 
    return s.ToString(); 
} 

和呼叫它這樣:

if (!IsAssociated(".ext")) 
    Associate(".ext", "ClassID.ProgID", "ext File", "YourIcon.ico", "YourApplication.exe"); 

(來自https://www.codeproject.com/Articles/621/Associate-File-Extension-with-Shell-OPEN-command-a?msg=1589623#xx1589623xx

此外,如果您還可以更改任何給定文件夾的圖標。這不是你要求的,但如果你想了解更多,我建議你看看這篇文章:https://www.codeproject.com/Articles/9331/Create-Icons-for-Folders-in-Windows-Explorer-Using

+0

我無法想到關於傳遞Associate()的參數。 – Amal

+0

你是什麼意思?字符串擴展名=>要更改文件類型的文件擴展名的圖標。 '.txt'或'.doc',字符串progID =>保持爲「ClassId.ProgId」,字符串描述=>任何你想要的 - 它是你的文件類型的描述,string icon =>你的圖標的路徑,字符串應用程序=>您的應用程序的路徑 –

+0

您已經提到擴展名爲文件類型。但註冊表打開使用提供的擴展在Associate()方法無法完成 – Amal