| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 738 人关注过本帖
标题:关于BEEP函数的发声问题
只看楼主 加入收藏
bobo2021
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-12-25
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:6 
关于BEEP函数的发声问题
'声明API函数
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Public v  '变量声明

我在笔记本上用是扬声器响

到了台式机就变成蜂鸣器响了,

怎样处理才能在耳机或扬声器发声?
搜索更多相关主题的帖子: 笔记本 台式机 蜂鸣器 扬声器 
2014-01-24 22:43
alike
Rank: 2
等 级:论坛游民
威 望:1
帖 子:9
专家分:34
注 册:2014-1-8
收藏
得分:0 
你台式机装了扬声器没?
2014-01-25 08:42
lowxiong
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:27
帖 子:652
专家分:3402
注 册:2008-5-7
收藏
得分:8 
可以使用midi音色模拟,但效果没有beep好。
新建一工程,在窗口里放一个command控件,拷贝如下代码,可以从耳机里听到一个长声,两个短声的莫斯电码。

Private Declare Function MIDIOutOpen Lib "winmm.dll" Alias "midiOutOpen" (lphMidiOut As Long, ByVal uDeviceID As Long, ByVal dwCallback As Long, ByVal dwInstance As Long, ByVal dwFlags As Long) As Long
Private Declare Function midiOutClose Lib "winmm.dll" (ByVal hMidiOut As Long) As Long
Private Declare Function midiOutShortMsg Lib "winmm.dll" (ByVal hMidiOut As Long, ByVal dwMsg As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim sLen As Integer   '定义一个短电码时长,则长声为其3倍
Dim jLen As Integer   '定义码间间隔时长

Private Sub MosCode(Code As Integer)
  Dim hMidi As Long, t As Long
  Dim midi_err As Integer
  midi_err = MIDIOutOpen(hMidi, -1, 0, 0, 0)
  t = sLen
  If Code = 1 Then t = 3 * sLen
  If Not midi_error = 0 Then Exit Sub
  midiOutShortMsg hMidi, 65 * &H100 + &HC0    '更换midi音色,65是次中音萨克斯,最接近电报声
  midiOutShortMsg hMidi, &H90 + 80 * &H100 + 100 * &H10000 + 0
  Sleep t
  midiOutClose hMidi
  Sleep jLen
End Sub

Private Sub Command1_Click()
  sLen = 200: jLen = 10
  MosCode 1
  MosCode 0
  MosCode 0
End Sub
2014-01-25 09:36
bobo2021
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-12-25
收藏
得分:0 
回复 3楼 lowxiong
效果的确不好,为什么在笔记本上是可以的?
2014-01-25 12:28
bobo2021
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-12-25
收藏
得分:0 
回复 2楼 alike
你试了吗?
2014-01-25 12:28
bobo2021
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2011-12-25
收藏
得分:0 
回复 3楼 lowxiong
不知道把台式机里的蜂鸣器折了行不行?
2014-01-25 12:29
vbvcr51
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:18
帖 子:364
专家分:1724
注 册:2013-11-3
收藏
得分:2 
用api函数-playsound,例如:
PlaySound "C:\WINDOWS\Media\ding.wav", 3, SND_ASYNC
2014-01-26 12:47
快速回复:关于BEEP函数的发声问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016168 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved