-1
是否可以爲進程定義圖標? 例如:Process/ProcessStartInfo圖標
startInfo.Icon = 'C:\somepath\icon.ico';
該圖標應顯示在任務欄中。 爲了達到這個目的,唯一可行的方法就是建立一個鏈接,但我希望有一個其他選擇,而不是動態創建鏈接並啓動它。
是否可以爲進程定義圖標? 例如:Process/ProcessStartInfo圖標
startInfo.Icon = 'C:\somepath\icon.ico';
該圖標應顯示在任務欄中。 爲了達到這個目的,唯一可行的方法就是建立一個鏈接,但我希望有一個其他選擇,而不是動態創建鏈接並啓動它。
該圖標與該進程的可執行文件相關聯,因此您無法對其進行更改。作爲唯一的解決方法,您可以創建可執行文件的快捷方式併爲快捷方式設置自定義圖標。然後,你可以通過路徑快捷方式文件到Process.Start
(你需要通過項目的COM引用到Windows腳本宿主對象模型>添加引用> COM> Windows腳本宿主對象模型這個工作):
using System;
using System.Diagnostics;
using IWshRuntimeLibrary;
class Program
{
private static void Main(string[] args)
{
string shortcutAddress = Environment.GetFolderPath(
Environment.SpecialFolder.Desktop) + @"\MyProcess.lnk";
var shell = new WshShell();
var shortcut = (IWshShortcut)shell.CreateShortcut(shortcutAddress);
shortcut.Description = "New shortcut for a Notepad";
shortcut.Hotkey = "Ctrl+Shift+N";
shortcut.TargetPath = Environment.GetFolderPath(
Environment.SpecialFolder.System) + @"\notepad.exe";
shortcut.IconLocation = Environment.GetFolderPath(
Environment.SpecialFolder.System) + @"\calc.exe";
shortcut.Save();
Process.Start(shortcutAddress);
}
}
你期望這個圖標被使用*在哪裏? –
在任務欄中,與鏈接行爲相同。 – Kerubis
我相信這是通過在[STARTUPINFO'](https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331(v = vs.85))中傳遞'STARTF_TITLEISLINKNAME'標記完成的。 aspx)(顯然在標題成員中傳遞鏈接路徑)在調用'CreateProcess'時。沒有在.NET中公開,並且它需要一個路徑,所以如果你真的想避免創建一個物理文件,你還會談論創建一個shell命名空間擴展。可能比它的價值更多的努力。 –