正文

PowerShell中调用WPF生成炫酷窗口实例(使用powershell)硬核推荐

文章摘要

这篇文章主要介绍了如何使用PowerShell脚本结合Akceleratory技术在Windows应用程序中实现类型加速器功能。通过自动化方法在WinUI界面中添加类型加速器,实现了拖拽时的组件添加功能。文章还详细描述了如何通过拖拽事件处理实现加速器的动态加载,并通过PowerShell代码展示了自动化流程。此外,文章还展示了如何通过图形效果和渐变阴影增强界面的美观性,最终实现了一个功能完整且 visually appealing的用户界面。

 # Plik: 4_Demo_v3_Reflection.ps1 #requires -version 3 $Akceleratory=[PSObject]. Assembly. GetType(“System.Management.Automation.TypeAccelerators”) Add-Type -AssemblyName PresentationCore, PresentationFramework -PassThru | Where-Object IsPublic | ForEach-Object { $Class=$_ try { $Akceleratory::Add($Class.Name,$Class) } catch { “Failed to add $($Class.Name) accelerator pointing to $($Class.FullName)” } } [Window]@{ OpacityMask=[DrawingBrush]@{ Drawing=[DrawingGroup]@{ Children=& { $Kolekcja=New-Object DrawingCollection $Kolekcja.Add([GeometryDrawing]@{ Brush=’Black’ Geometry=[EllipseGeometry]@{ radiusX=0.48 radiusY=0.48 Center=’0.5,0.5′ } }) $Kolekcja.Add([GeometryDrawing]@{ Brush=’Transparent’ Geometry=[RectangleGeometry]@{ Rect=’0,0,1,1′ } }) , $Kolekcja } } } Background=[LinearGradientBrush]@{ Opacity=0.5 StartPoint=’0,0.5′ Endpoint=’1,0.5′ GradientStops=& { $Stopki=New-Object GradientStopCollection $Colors=’Blue’, ‘Green’ foreach ($i in 0..1) { $Stopki.Add( [GradientStop]@{ Color=$Colors[$i] Offset=$i } ) } , $Stopki } } Width=800 Height=400 WindowStyle=’None’ AllowsTransparency=$true Effect=[DropShadowEffect]@{ BlurRadius=10 } TopMost=$true Content=& { $Stos=[StackPanel]@{ VerticalAlignment=’Center’ HorizontalAlignment=’Center’ } $Stos.AddChild( [Label]@{ Content=’PowerShell Rocks!’ FontSize=80 FontFamily=’Consolas’ Foreground=’White’ Effect=[DropShadowEffect]@{ BlurRadius=5 } } ) , $Stos } } | ForEach-Object { $_.Add_MouseLeftButtonDown({ $this.DragMove() }) $_.Add_MouseRightButtonDown({ $this.Close() }) $_.ShowDialog() | Out-Null }