【发布时间】:2018-08-13 20:27:04
【问题描述】:
我在脚本中有以下类型定义:
Add-Type -TypeDefinition @'
namespace Win32
{
//https://msdn.microsoft.com/en-us/library/windows/desktop/ms633548(v=vs.85).aspx
public static class Functions
{
[System.Runtime.InteropServices.DllImport("User32.dll", EntryPoint="ShowWindow")]
public static extern bool SW(System.IntPtr hWnd, Win32.SW nCmdShow);
}
public enum SW
{
HIDE = 0,
SHOW_NORMAL = 1,
SHOW_MINIMIZED = 2,
MAXIMIZE = 3,
SHOW_MAXIMIZED = 3,
SHOW_NO_ACTIVE = 4,
SHOW = 5,
MINIMIZE = 6,
SHOW_MIN_NO_ACTIVE = 7,
SHOW_NA = 8,
RESTORE = 9,
SHOW_DEFAULT = 10,
FORCE_MINIMIZE = 11
}
}
'@
其中的一切都有效,例如:
[Win32.Functions]::SW((Get-Process -Name powershell).MainWindowHandle, [Win32.SW]::SHOW_DEFAULT)
但是,当我使用[Win32.SW]::HIDE 时,我完全无法恢复该窗口。每个选项都失败了,我得到false 返回。文档中是否缺少我的某些内容或 SW_HIDE 的某个功能导致无法恢复?
我的最终目标是在自扩展 .cmd->.ps1 脚本中创建一些 WPF GUI,创建伪可执行文件并隐藏左侧的 powershell 窗口(可能会根据脚本进行恢复行动)。
【问题讨论】:
-
你用什么代码来恢复你的窗口?
-
@rs232 主块下面的代码sn-p
标签: c# powershell pinvoke user32