我使用this post over at Microsoft's TechNet中的代碼更改我正在運行的PowerShell應用程序的圖標。這適用於Powershell窗口中顯示的圖標,但它不會更改任務欄的圖標。我稍微改了一下功能,希望它能改變任務欄中顯示的圖標。運行控制檯應用程序的Powershell更改任務欄圖標
# Set the icon of the current console window to the specified icon.
#
# AUTHOR: Aaron Lerch <http://www.aaronlerch.com/blog>
# COPYRIGHT: © 2009 Aaron Lerch
# LINK: http://gallery.technet.microsoft.com/scriptcenter/9d476461-899f-4c98-9d63-03b99596c2c3
#
# PARAM:
# -IconFile
# Absolute path to the icon file.
# RETURN:
# $null
function Set-ConsoleIcon {
Param(
[parameter(Mandatory = $true)] [string] $IconFile
)
[System.Reflection.Assembly]::LoadWithPartialName('System.Drawing') | Out-Null
# Verify the file exists
if ([System.IO.File]::Exists($iconFile) -eq $true) {
$ch = Invoke-Win32 'kernel32' ([IntPtr]) 'GetConsoleWindow'
$i = 0;
$size = 16;
while ($i -ne 4) {
$ico = New-Object System.Drawing.Icon($iconFile, $size, $size)
if ($ico -ne $null) {
Send-Message $ch 0x80 $i $ico.Handle | Out-Null
}
if ($i -eq 4) {
break
}
$i += 1
$size += 16
}
}
else {
Write-Host 'Icon file not found' -ForegroundColor 'Red'
}
}
我提供的圖標,大小16
(wParam 1
),32
(wParam 2
),48
(wParam 3
)和64
(wParam 4
)。
我也嘗試從我啓動的C#應用程序(基於this Stackoverflow discussion)更改圖標,但根本不起作用。
如果你想看到完整的代碼看看以下內容:
你是否得到這個工作?我對我的腳本有類似的要求。 –
不,沒有機會。 – Fleshgrinder
這是關於它的一些信息,但C#/ C++而不是PS:http://stackoverflow.com/q/2986853/143684第二個答案有一個C++代碼的博客文章。雖然這確實起作用,但任務將僅顯示初始應用程序圖標,而不會顯示動態窗口圖標。如果您使用7 Taskbar Tweaker(我的默認設置)取消組合窗口並且至少有兩個應用程序窗口,則只能看到它。畢竟不切實際。所以我會說這是一個任務欄限制。該圖標出現在其他地方(標題欄,Alt + Tab切換器)。 – ygoe