Powershell ISE 5.1-WindowsMediaPlayer类-事件未触发

Powershell ISE 5.1-WindowsMediaPlayer类-事件未触发,powershell,events,windows-media-player,Powershell,Events,Windows Media Player,有人知道如何触发WindowsMediaPlayer类的MediaEnded事件吗?事件已注册,但未触发。这不是操作的问题,因为我已经尝试使用Out文件输出结果。我可以使用Register ObjectEvent命令从开始作业触发事件,但由于某些原因,MediaPlayer不希望触发事件 cls Unregister-Event * Add-Type -AssemblyName PresentationCore $Player = [System.Windows.Media.MediaPlay

有人知道如何触发WindowsMediaPlayer类的MediaEnded事件吗?事件已注册,但未触发。这不是操作的问题,因为我已经尝试使用Out文件输出结果。我可以使用Register ObjectEvent命令从开始作业触发事件,但由于某些原因,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代码或特定问题,如下所述:

但是在这里

我试图使用“MediaEnded”事件句柄来计算 声音文件已结束,然后转到下一个声音文件

。。。这是一个解决办法

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()
}

谢谢你的来信,但我已经有了这样的解决办法。问题是,将变通方法合并到我的脚本中要复杂得多,我还没有弄清楚如何做,因此我想看看mediaplayer事件是否可用。我已经在这个问题上工作了一个多月,但仍然没有找到解决方法或mediaplayer事件。为了使解决方案在某种程度上适用于我的案例,我使用Start Job将解决方案代码发送到另一个线程中。该作业将更新我的主脚本可以读取的文本文件。如何在文本文件发生更改时触发事件?@ PASTANOTER,如果您的答案的主旨是对另一个问题的答案的逐字拷贝,请张贴包含链接而不是答案的注释。@ USE117244,考虑一个<代码> FraseSistMeaveCurter < /代码>为基础的解决方案-例如,参见。