如何解决Powershell ISE 5.1-WindowsMediaPlayer类-事件未触发
有人知道如何触发WindowsMediaPlayer类的MediaEnded事件吗?该事件已注册,但未触发。这不是操作的问题,因为我尝试使用Out-file输出结果。我可以使用Register-ObjectEvent命令从Start-Job触发事件,但是由于某些原因,MediaPlayer不想触发事件。
cls
Unregister-Event *
Add-Type -AssemblyName PresentationCore
$Player = [System.Windows.Media.MediaPlayer]::new()
$path = "D:\minesweeper\Sound\Sounds\Bomb.wav"
$file = (Get-Item $path)
$Player.Open($file.FullName)
$player.Play()
$null = Register-ObjectEvent -InputObject $Player -EventName MediaEnded -Action {write-host "$(Get-Date)"}
Get-EventSubscriber
解决方法
这实际上不是PowerShell代码或特定问题,如下所述:
C# MediaPlayer.MediaEnded event not firing。
但是这里...
我正在尝试使用“ MediaEnded”事件句柄计算出 声音文件已结束,然后移至下一个声音文件。
powershell 'system.windows.media.mediaplayer' Register-ObjectEvent
...是一种解决方法。
Add-Type -AssemblyName PresentationCore
$_MediaPlayer = New-Object System.Windows.Media.MediaPlayer
$_MusicFolder = 'C:\Users\Making JESUS Proud\Music'
$_MusicFiles = Get-ChildItem -path $_MusicFolder -include *.mp3 -recurse
$duration = $null
foreach($_file in $_MusicFiles){
"Playing $($_file.BaseName)"
[uri]$_song = $_file.FullName
do {
$_MediaPlayer.Open($_song)
$_songDuration = $_MediaPlayer.NaturalDuration.TimeSpan.TotalMilliseconds
}
until ($_songDuration)
$_MediaPlayer.Volume = 1
$_MediaPlayer.Play()
Start-Sleep -Milliseconds $_songDuration
$_MediaPlayer.Stop()
$_MediaPlayer.Close()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。