Пакетная команда для изменения иконки текущего запущенного окна - PullRequest
0 голосов
/ 07 ноября 2018

В моей рабочей среде у меня может быть открыто до 10 окон командной строки, каждое из которых настроено на работу в отдельном контексте. Когда все они открыты, мне приходится переключаться между несколькими из них, чтобы найти тот, с которым я хочу работать.

Я уже устанавливаю различные цвета переднего плана и фона для каждого окна на основе некоторых критериев, но было бы намного легче различать их, имея значок разного цвета на панели задач. Таким образом, мне даже не пришлось бы максимизировать / привлечь их к фокусу, чтобы найти правильный с самого начала.

Есть ли способ, которым я могу программно изменить значок на панели задач в текущем окне командной строки, выполнив в нем пакетные команды?

1 Ответ

0 голосов
/ 07 ноября 2018

Нет встроенного способа сделать это, например, есть команда color из cmd.exe для изменения цвета.

Вы можете либо поискать в Интернете некоторые полезности, либо свернуть свои собственные, например, в C #, вызвав SetConsoleIcon Win32 API. Обратите внимание, что этот API официально не задокументирован, YMMV.

using System;
using System.Drawing;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("kernel32.dll", SetLastError = true)]
    private static extern uint SetConsoleIcon(IntPtr iconHandle);

    static void Main(string[] args)
    {
        if (args[0].Equals("--reset", StringComparison.OrdinalIgnoreCase))
        {
            SetConsoleIcon(IntPtr.Zero);
        }
        else
        {
            // Use this to load an icon from an icon file instead:
            //   var icon = new Icon(args[0]); // load from .ico file
            // Extract icon from given executable/dll.
            using (var icon = Icon.ExtractAssociatedIcon(args[0]))
            {
                if (icon != null)
                    SetConsoleIcon(icon.Handle);
            }
        }
    }
}

Вы должны быть в состоянии скомпилировать это, используя csc.exe setconico.cs (при условии, что вы назвали файл setconico.cs). Это сгенерирует setconico.exe, который вы можете использовать следующим образом:

Установите текущий значок консоли, на которой вы его запускаете, на значок notepad.exe

c:\> setconico.exe c:\windows\notepad.exe

Вы также можете написать приведенный выше код в PowerShell, если не хотите компилировать отдельную утилиту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...