如何在c#中获得默认浏览器的图标
本文关键字:默认浏览器 图标 | 更新日期: 2023-09-27 18:16:13
我有一个按钮,说"在浏览器中打开"。我想把它重命名为"打开",并在它旁边显示默认浏览器的图标。
如果默认浏览器是firefox,那么我希望firefox图标在我的按钮。如果默认浏览器是chrome,那么我想要chrome图标。
如何获得默认浏览器图标?
如果每个版本的windows都不同,那么我需要windows 7版本
在应用程序中嵌入一个空白的htm或html文件(或创建它)
然后调用图标。
它将返回默认的浏览器图标
我已经更改了代码,这是我的版本。
using System;
using Microsoft.Win32;
using System.Drawing;
namespace Namespace
{
public static class DefaultSystemBrowser
{
private static bool initialized = false;
private static string path = null;
public static string Path
{
get
{
CheckForErrors();
return path;
}
}
public static Icon Icon
{
get {
CheckForErrors();
return Icon.ExtractAssociatedIcon( path );
}
}
public static Bitmap Bitmap
{
get
{
CheckForErrors();
return Icon.ExtractAssociatedIcon( path ).ToBitmap();
}
}
private static void CheckForErrors()
{
if ( !initialized )
throw new InvalidOperationException( "You can't use DefaultSystemBrowser class before you call Determine()." );
if ( ErrorMessage != null )
throw new InvalidOperationException( "You can't use DefaultSystemBrowser class if call to Determine() resulted in error." );
}
/// <summary>
/// Null if no error occured, error description otherwise.
/// </summary>
public static string ErrorMessage
{
get;
private set;
}
/// <summary>
/// Finds out all information about current default browser. You can call this method every time you want to find out default browser.
/// </summary>
public static void Determine()
{
path = String.Empty;
initialized = true;
RegistryKey regKey = null;
ErrorMessage = null;
try
{
//set the registry key we want to open
regKey = Registry.ClassesRoot.OpenSubKey( "HTTP''shell''open''command", false );
//get rid of the enclosing quotes
path = regKey.GetValue( null ).ToString().ToLower().Replace( "" + (char) 34, "" );
//check to see if the value ends with .exe (this way we can remove any command line arguments)
if ( !path.EndsWith( "exe" ) )
//get rid of all command line arguments (anything after the .exe must go)
path = path.Substring( 0, path.LastIndexOf( ".exe" ) + 4 );
initialized = true;
}
catch ( Exception ex )
{
ErrorMessage = string.Format( "ERROR: An exception of type: {0} occurred in method: {1} in the following module: {2}", ex.GetType(), ex.TargetSite, typeof( DefaultSystemBrowser ) );
}
finally
{
//check and see if the key is still open, if so
//then close it
if ( regKey != null )
regKey.Close();
}
}
}
}
我是这样使用代码的:
DefaultSystemBrowser.Determine();
if ( DefaultSystemBrowser.ErrorMessage == null )
{
btnOpenInBrowser.Image = DefaultSystemBrowser.Bitmap;
}
else
{
btnOpenInBrowser.Image = Properties.Resources.firefox_24_noshadow;
}