Powershell ISE 5.1-WindowsMediaPlayer类-事件未触发
有人知道如何触发WindowsMediaPlayer类的MediaEnded事件吗?事件已注册,但未触发。这不是操作的问题,因为我已经尝试使用Out文件输出结果。我可以使用Register ObjectEvent命令从开始作业触发事件,但由于某些原因,MediaPlayer不希望触发事件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
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 < /代码>为基础的解决方案-例如,参见。