如果您想将控制台隐藏在 GUI 后面,我已经成功使用以下本机功能:
# .Net methods for hiding/showing the console in the background
Add-Type -Name Window -Namespace Console -MemberDefinition '
[DllImport("Kernel32.dll")]
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr hWnd, Int32 nCmdShow);
'
function Show-Console
{
$consolePtr = [Console.Window]::GetConsoleWindow()
# Hide = 0,
# ShowNormal = 1,
# ShowMinimized = 2,
# ShowMaximized = 3,
# Maximize = 3,
# ShowNormalNoActivate = 4,
# Show = 5,
# Minimize = 6,
# ShowMinNoActivate = 7,
# ShowNoActivate = 8,
# Restore = 9,
# ShowDefault = 10,
# ForceMinimized = 11
[Console.Window]::ShowWindow($consolePtr, 4)
}
function Hide-Console
{
$consolePtr = [Console.Window]::GetConsoleWindow()
#0 hide
[Console.Window]::ShowWindow($consolePtr, 0)
}
将上述函数添加到您的表单后,只需在您的Form_Load 事件中调用Hide-Console 函数:
$OnFormLoad =
{
Hide-Console
}
如果您需要显示控制台,也许是为了调试,您可以通过调用Show-Console 函数轻松地再次显示控制台:
$OnButtonClick =
{
Show-Console
}
有关您可以传递给ShowWindow 的号码的更多信息,您可以查看ShowWindow documentation on MSDN here
根据评论更新
感谢此代码。我试图在我的脚本中使用它,但我想把 Hide-Console 放在哪里?我的表单加载看起来像这样 $objForm.Add_Shown({$objForm.Activate()}) [void] $objForm.ShowDialog()
要使用此代码隐藏控制台,您只需调用Hide-Console。由于您已经在 Shown 事件 ($objForm.Add_Shown) 中有代码,我们可以简单地添加另一行来调用命令:
改变这个:
$objForm.Add_Shown({$objForm.Activate()})
到这里:
$objForm.Add_Shown({
$objForm.Activate()
Hide-Console
})
当您的表单为Shown 时,控制台将被隐藏(如果您想稍后看到,您仍然可以调用Show-Console)。