首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GUI打开时播放声音

GUI打开时播放声音
EN

Stack Overflow用户
提问于 2017-10-27 06:48:34
回答 1查看 197关注 0票数 0

我试图播放声音,只要GUI是开放的,但由于我不熟悉powershell,我需要帮助。

现在我有一个:

代码语言:javascript
复制
$sound = New-Object System.Media.SoundPlayer
$sound.SoundLocation="c:\WINDOWS\Media\ringout.wav"
$Form.ShowDialog()
$sound.PlayLooping()
$flag=$false

1..10 | foreach {
    if ($_ -gt 5) {
         $flag=$true
    }
    else {
        sleep -s 1
    }
    if($flag) {
        $sound.Stop()
    }
}

当然,它是在我关闭这个GUI之后播放的,如果我将$Form.ShowDialog()放在最后,它将在GUI显示之前播放.GUI是通过按钮关闭的,简单的$Form.Close()

编辑($Form声明) :

代码语言:javascript
复制
 $Form = New-Object System.Windows.Forms.Form
 $Form.Text = "ALERT"
 $Form.StartPosition = "CenterScreen"
 $Form.Topmost = $True
 $Form.BackColor = "White"
 $Form.AutoSize = $True
 $Form.AutoSizeMode = "GrowAndShrink"
 $Form.ControlBox = $false

我也尝试过使用ifwhile循环,但没有成功。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-27 08:18:36

首先要做的是。Form.Show()$Form.ShowDialog()有一个重要的区别。当Show()将立即返回时,后者将等待对话框完成。所以,如果你在ShowDialog()之前开始音乐,在那行之后停止音乐,我不知道,为什么它不能工作。

为了满足您的需要,您可能会喜欢事件。使用Form(https://msdn.microsoft.com/en-us/library/system.windows.forms.form_events(v=vs.110%29.aspx)s Load事件)在表单加载时执行某些逻辑,在窗体关闭时使用它的Closing事件添加一些逻辑:

代码语言:javascript
复制
$Form = New-Object System.Windows.Forms.Form -Property @{
    Text          = "ALERT"
    StartPosition = "CenterScreen"
    Topmost       = $True
    BackColor     = "White"
    AutoSize      = $True
    AutoSizeMode  = "GrowAndShrink"
    ControlBox    = $false
}
$sound = New-Object System.Media.SoundPlayer -Property @{SoundLocation = "c:\WINDOWS\Media\ringout.wav"}

$Form.Add_Load({
    $sound.PlayLooping()
})

$Form.Add_Closing({
    $sound.Stop()
})

$Form.Show()

对于可读性和可重用性,人们可能会认为以下几点更好:

代码语言:javascript
复制
[scriptblock]$startMusic = {
    $sound.PlayLooping()
}

[scriptblock]$stopMusic = {
    $sound.Stop()
}

$Form.Add_Load($startMusic)
$Form.Add_Closing($stopMusic)

这将使我们很容易地重用这些方法(例如,对于其他对话框和操作)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46969071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档