我正在尝试使 powershell 窗口窗体全部透明,因为我能够使 aero 样式控件正常工作并隐藏 powershell 控制台窗口,这是唯一缺少的东西。 我试图在 powershell 中实现的教程是这样的: http://blogs.msdn.com/b/tims/archive/2006/04/18/578637.aspx但它在 C# 中,有帮助吗?
最佳答案
您可以使用 C# 示例本身,方法是在 PowerShell 中编译/加载它。样本(未经测试):
$def = @"
[StructLayout(LayoutKind.Sequential)]
public struct MARGINS
{
public int left;
public int right;
public int top;
public int bottom;
}
[DllImport("dwmapi.dll")]
public static extern bool DwmIsCompositionEnabled();
[DllImport("dwmapi.dll")]
public static extern void DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS margins);
"@
#Load/Compile C# P/Invoke code
Add-Type -Namespace stackoverflow -Name Aero -MemberDefinition $def
#Check if Aero is enabled on this computer
If([stackoverflow.Aero]::DwmIsCompositionEnabled()) {
#Get mainwindowhandle for powershell console process
$hwnd = (Get-Process -Id $pid).MainWindowHandle
#Define margins = how much extra space to make transparent
$margins = New-Object -TypeName 'stackoverflow.Aero+MARGINS'
$margins.top = 50
$margins.bottom = 0
$margins.left = 0
$margins.right = 0
#Make powershell-console partly aero.
[stackoverflow.Aero]::DwmExtendFrameIntoClientArea($hwnd, $margins)
}
关于windows - Powershell形成全窗玻璃透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28651137/