当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] WPF 倒计时器

作者:精品下载站 日期:2024-12-14 08:07:36 浏览:13 分类:玩电脑

WPF 倒计时器


去年我发布了一个名为 PSClock 的 PowerShell 模块。该模块包含用于创建显示时钟的透明 WPF 表单的命令。不久之后,有人发布了倒计时器的请求。这并不是一个不合理的要求,我终于抽出时间来实现。但是,我已经有一个包含许多计时器和倒计时相关命令的模块,称为 PSTimers 我一直在考虑基于 WPF 的计时器,因此这解决了两个问题。

我已使用新命令 Start-PSCountdownTimer 将 PSTimers 模块 v1.0.1 发布到 PowerShell Gallery。此命令基于 Start-PSClock,并将启动基于 WPF 的倒计时器。计时器的外观和行为可通过参数进行定制。

Start-PSCountdownTimer -Seconds 300 -FontSize 48 -Color Green -Message "The PowerShell magic begins in "

[玩转系统] WPF 倒计时器

50 秒时,字体颜色将变为黄色,30 秒时,变为红色。这些设置也可以通过参数来设置。

计时器使用同步哈希表。

PS C:\> $pscountDownClock

Name                           Value
----                           -----
FontStyle                      Normal
Warning                        30
StartingPosition
AlertColor                     Yellow
WarningColor                   Red
FontWeight                     Normal
Message                        The PowerShell magic begins in
OnTop                          False
Seconds                        300
FontSize                       48
CurrentPosition                {276, 964}
Running                        True
Runspace                       System.Management.Automation.Runspaces.LocalRunspace
Alert                          50
Color                          Green
Started                        10/19/2022 12:35:00 PM
FontFamily                     Segoi UI

时钟运行后,可以修改哈希表来调整WPF形式。

PS C:\> $PScountdownclock.fontsize = 60
PS C:\> $PScountdownclock.color = "chartreuse"

如果您想提前停止时钟,可以运行 Stop-PSCountdownTimer 或将 $PSCountdownClock.Running 设置为 $False。

倒计时器在单独的运行空间中运行,因此您的提示不会被阻止。但这也意味着它无法轻松地与启动它的 PowerShell 会话进行交互。如果您希望在计时器结束时发生一些事情,我建议围绕该命令编写一个自动化脚本。

<#
A proof-of-concept script that adds an action at the end of the PSCountdownTimer
#>
Start-PSCountdownTimer -seconds 60 -message "The PowerShell magic begins in " -FontSize 64 -Color SpringGreen
Do {
    Start-Sleep -Seconds 1
} While ($PScountdownclock.Running)
Clear-Host
Write-Host "Are you ready for some PowerShell?" -ForegroundColor magenta -BackgroundColor gray

Add-Type -AssemblyName PresentationCore
$filename = "c:\work-Start.mp3"
#the media player launches with no UI. Use the object's methods to control it.
$global:mediaplayer = New-Object system.windows.media.mediaplayer
$global:mediaPlayer.Open($filename)
$global:mediaplayer.Play()

# mediaplayer.stop()
# $mediaplayer.close()

我想我会开始在我的课堂和会议演讲中使用它。

该模块应该跨平台工作,但基于 WPF 的命令需要 Windows。如果你尝试一下,我很想知道你的想法。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯