繁体   English   中英

C# 控制台应用程序图标

[英]C# console application icon

有谁知道如何在代码中设置 C# 控制台应用程序的图标(不使用 Visual Studio 中的项目属性)?

您可以在项目属性中更改它。

请参阅这篇 Stack Overflow 文章: Is it possible to change a console window's icon from .net?

总结一下,在 Visual Studio 中右键单击您的项目(不是解决方案)并选择属性。 在“应用程序”选项卡的底部有一个“图标和清单”部分,您可以在其中更改图标。

您不能在代码中指定可执行文件的图标 - 它是二进制文件本身的一部分。

如果有帮助,您可以从命令行使用/win32icon:<file> ,但您不能在应用程序代码中指定它。 不要忘记,大部分时间显示应用程序的图标,您的应用程序根本没有运行!

假设您指的是资源管理器中文件本身的图标。 如果您指的是应用程序运行时的图标,只要双击该文件,我相信那将始终只是控制台本身的图标。

这是通过代码更改图标的解决方案:

class IconChanger
{
    public static void SetConsoleIcon(string iconFilePath)
    {
        if (Environment.OSVersion.Platform == PlatformID.Win32NT)
        {
            if (!string.IsNullOrEmpty(iconFilePath))
            {
                System.Drawing.Icon icon = new System.Drawing.Icon(iconFilePath);
                SetWindowIcon(icon);
            }
        }
    }
    public enum WinMessages : uint
    {
        /// <summary>
        /// An application sends the WM_SETICON message to associate a new large or small icon with a window. 
        /// The system displays the large icon in the ALT+TAB dialog box, and the small icon in the window caption. 
        /// </summary>
        SETICON = 0x0080,
    }

    [System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
    private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, IntPtr lParam);


    private static void SetWindowIcon(System.Drawing.Icon icon)
    {
        IntPtr mwHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
        IntPtr result01 = SendMessage(mwHandle, (int)WinMessages.SETICON, 0, icon.Handle);
        IntPtr result02 = SendMessage(mwHandle, (int)WinMessages.SETICON, 1, icon.Handle);
    }// SetWindowIcon()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM