如何在(期间)鼠标单击时发出 Console.Beep?

Posted

技术标签:

【中文标题】如何在(期间)鼠标单击时发出 Console.Beep?【英文标题】:How to Console.Beep while (during) mouse click down? 【发布时间】:2013-03-30 18:10:14 【问题描述】:

所以,我正在尝试做一个简单的 GUI,以便在 C# 上使用 Beeps 制作音乐。我一直在尝试,但我不确定是否可以制作控制台。例如,当我按住一个按钮时会发出哔哔声。

正常的 Beep() 方法只播放一个中等频率的短哔声,并且存在过载 Beep(int 频率,int 持续时间)。我想要做的实际上是在我按住按钮的整个过程中播放它,但显然我之前无法说明持续时间。

我认为这是不可能的,但也许有办法?

这也是我在网站上的第一个问题,所以,嘿。

【问题讨论】:

表单还是 WPF?你应该可以使用鼠标按下事件处理程序 表单,问题是我无法设置持续时间,因为我将按住按钮未知的时间。 顺便在我的回答上打勾,谢谢 【参考方案1】:

你可以这样做,我只是测试了它并且它可以工作,并且在运行时不会锁定表单。

    private void Window_MouseDown_1(object sender, MouseButtonEventArgs e)
    
        // Starts beep on background thread
        Thread beepThread = new Thread(new ThreadStart(PlayBeep));
        beepThread.IsBackground = true;
        beepThread.Start();
    
    private void PlayBeep()
    
        // Play 1000 Hz for max amount of time possible
        // So as long as you dont hold the mouse down for 2,147,483,647 milliseconds it should work.
        Console.Beep(1000, int.MaxValue);
    

    private void Window_MouseUp_1(object sender, MouseButtonEventArgs e)
    
        //Aborts the beep with a new 1ms beep on mouse up which finishes the task.
        Console.Beep(1000, 1);
    

【讨论】:

哇,酷,没想到要中止一声长哔声。这对我有用,你是什么意思它挂起? 另一个答案也很好,但是哔哔声停止了,而不是持续不断的声音,但这正是我所需要的。非常非常感谢你们。

以上是关于如何在(期间)鼠标单击时发出 Console.Beep?的主要内容,如果未能解决你的问题,请参考以下文章

如何在功能测试期间单击不是表单提交按钮的按钮

是否可以在 Qt3.0 中发出跨进程信号或发布触摸/鼠标单击事件?

HTML:鼠标悬停或单击时播放声音

如果鼠标在 JWindow 外部单击,如何使用 mouseClick 事件?

第十三周总结

如何创建在使用 AnimationController 创建的倒数计时器期间发出的警报?