有谁知道如何在代码中设置 C# 控制台应用程序的图标(不使用 Visual Studio 中的项目属性)?
问问题
38010 次
3 回答
27
您可以在项目属性中更改它。
请参阅这篇 Stack Overflow 文章:是否可以从 .net 更改控制台窗口的图标?
总结一下在 Visual Studio 中右键单击您的项目(不是解决方案)并选择属性。在“应用程序”选项卡的底部有一个“图标和清单”部分,您可以在其中更改图标。
于 2011-05-11T12:08:57.783 回答
24
您不能在代码中指定可执行文件的图标 - 它是二进制文件本身的一部分。
如果有任何帮助,您将使用命令行/win32icon:<file>
,但您不能在应用程序的代码中指定它。不要忘记,在显示应用程序图标的大多数情况下,您的应用程序根本没有运行!
假设您指的是资源管理器中文件本身的图标。如果你指的是应用程序运行时的图标,如果你只是双击文件,我相信它永远只是控制台本身的图标。
于 2009-07-23T08:20:36.287 回答
6
这是通过代码更改图标的解决方案:
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()
}
于 2020-01-24T13:33:11.963 回答