[英]Is there a way to restore a program that is “hidden in the system tray”?
我正在嘗試制作一個腳本,以還原最小化/隱藏到系統托盤的應用程序窗口,例如Process Explorer,TeamViewer,uTorrent。
我已經嘗試了幾件事,最有希望的是:
function Set-WindowStyle {
<#
.LINK
Original gist - https://gist.github.com/jakeballard/11240204
#>
[CmdletBinding(DefaultParameterSetName = 'InputObject')]
param(
[Parameter(Position = 0, Mandatory = $True, ValueFromPipeline = $True, ValueFromPipelinebyPropertyName = $True)]
[Object[]] $InputObject,
[Parameter(Position = 1)]
[ValidateSet('FORCEMINIMIZE', 'HIDE', 'MAXIMIZE', 'MINIMIZE', 'RESTORE', 'SHOW', 'SHOWDEFAULT', 'SHOWMAXIMIZED', 'SHOWMINIMIZED', 'SHOWMINNOACTIVE', 'SHOWNA', 'SHOWNOACTIVATE', 'SHOWNORMAL')]
[string] $Style = 'SHOW'
)
BEGIN {
$WindowStates = @{
'FORCEMINIMIZE' = 11
'HIDE' = 0
'MAXIMIZE' = 3
'MINIMIZE' = 6
'RESTORE' = 9
'SHOW' = 5
'SHOWDEFAULT' = 10
'SHOWMAXIMIZED' = 3
'SHOWMINIMIZED' = 2
'SHOWMINNOACTIVE' = 7
'SHOWNA' = 8
'SHOWNOACTIVATE' = 4
'SHOWNORMAL' = 1
}
$Win32ShowWindowAsync = Add-Type -MemberDefinition @'
[DllImport("user32.dll")]
public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
'@ -Name "Win32ShowWindowAsync" -Namespace Win32Functions -PassThru
}
PROCESS {
foreach ($process in $InputObject) {
$Win32ShowWindowAsync::ShowWindowAsync($process.MainWindowHandle, $WindowStates[$Style]) | Out-Null
Write-Verbose ("Set Window Style '{1} on '{0}'" -f $MainWindowHandle, $Style)
}
}
}
這些腳本可用於其他目的(我可以“隱藏”一個窗口),
Get-Process TeamViewer | Set-WindowStyle -Style HIDE
但是似乎無法還原發送“ SHOW”,“ RESTORE”等組合的“最小化到托盤”應用程序。
Get-Process TeamViewer | Set-WindowStyle -Style SHOW
Get-Process TeamViewer | Set-WindowStyle -Style RESTORE
有任何想法嗎?
嘗試這個:
$sw = @'
[DllImport("user32.dll")]
public static extern int ShowWindow(int hwnd, int nCmdShow);
'@
$Proc = Get-Process TeamViewer | Select -ExpandProperty MainWindowHandle
$type = Add-Type -Name ShowWindow2 -MemberDefinition $sw -Language CSharpVersion3 -Namespace Utils -PassThru
$type::ShowWindow($Proc, 3) # 3 = maximize 2 = Minimize
我不知道它是否適合您的特定情況,請嘗試使用windowhide 。
我前一段時間使用它在需要時從批處理文件中隱藏特定的頂部窗口(它具有命令行版本),但是GUI會在系統中顯示很多隱藏的窗口。 然后,您可以使其出現。
它包含源代碼,因此您可以使其適應您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.