当前位置:编程学习 > VB >>

用vb做浏览器,并让其不播放网页中的声音,如何实现呢?

用vb做浏览器,并让其不播放网页中的声音,如何实现呢?
应该是用WebBrowser控件吧?或者还有什么更好的解决方案呢?

问题关键就是能像ie浏览器一样具有不播放网页上的声音的功能?但能播放动画,视频等!

如何解决呢? --------------------编程问答-------------------- IE7之前只能够到注册表里面去修改全局的设置(控制面板的声音设置),IE7里面可以用feature control --------------------编程问答-------------------- 使用Flash控件 --------------------编程问答-------------------- http://topic.csdn.net/t/20050826/00/4232137.html
这里面说到一个多功能的浏览器,vb源码,其中:能够对单独网页设定是否显示图片,ActiveX,动画,音乐...等东西 
2001年做的,我感觉他应该不是在注册表里面改吧

虽然公布了源码,我还是找不出控制声音的代码,英语不好,郁闷! --------------------编程问答-------------------- 这么冷清啊? --------------------编程问答-------------------- 帮顶顶

--------------------编程问答-------------------- 呵呵,老马到处灌水啊!帮我想想解决方案啊,灌水有什么用 --------------------编程问答-------------------- 最简单的方法,一发现有网页运行便将声音静音, 能这样子做就太简单了哈哈哈....

--------------------编程问答-------------------- 网页中的嵌入的声音还是网页浏览时的声音? --------------------编程问答--------------------
引用 6 楼 hei2008s 的回复:
呵呵,老马到处灌水啊!帮我想想解决方案啊,灌水有什么用


这个实在是没办法.....-_-b --------------------编程问答-------------------- 呵呵,马哥!谢谢马哥帮顶帖! --------------------编程问答-------------------- 是从浏览器发出的所有声音!既包括嵌入的声音,也包括各个网页媒体发出的声音,如flash等

这个问题超难了,说不定放一年也解决不了,期待中…… --------------------编程问答-------------------- '添加 Command1  Command2

Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const BM_CLICK = &HF5
Const WM_CLOSE = &H10
Const BM_GETCHECK = &HF0
Const BST_UNCHECKED = 0
Const BST_CHECKED = 1
Dim VolHwnd&, ChkHwnd&, rtn&
Private Sub Form_Load()
   Command1.Caption = "静 音"
   Command2.Caption = "发 音"
End Sub

Private Sub Form_Unload(Cancel As Integer)
   Command2_Click
End Sub

Private Sub Command1_Click()
   If ChkVolm = False Then SendMessage ChkHwnd, BM_CLICK, ByVal 0&, ByVal 0&
   Call SendMessage(VolHwnd, WM_CLOSE, 0, ByVal 0&)
End Sub

Private Sub Command2_Click()
   If ChkVolm Then SendMessage ChkHwnd, BM_CLICK, ByVal 0&, ByVal 0&
   Call SendMessage(VolHwnd, WM_CLOSE, 0, ByVal 0&)
End Sub

Public Function ChkVolm() As Boolean
   Call Shell("Sndvol32.exe", vbHide)
   VolHwnd = FindWindow(vbNullString, "Master Volume")
   If VolHwnd = 0 Then
      VolHwnd = FindWindow(vbNullString, "Tray Volume")
      If VolHwnd = 0 Then VolHwnd = FindWindow(vbNullString, "音量控制")
   End If
   ChkHwnd = FindWindowEx(VolHwnd, 0, "Button", "全部静音(&M)")
   rtn = SendMessage(ChkHwnd, BM_GETCHECK, 0, ByVal 0)
   ChkVolm = IIf(rtn = BST_CHECKED, True, False)
End Function


--------------------编程问答-------------------- 谢谢cbm666 ,还不是我想要的效果,你的做法是让全部都静音,而我只想让自编的浏览器静音,其他不静音!
期待更好的解决方案! --------------------编程问答-------------------- 顶一下,不要沉了! --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 你不可能知道ActiveX是不是有音频控制接口,去改需求吧 --------------------编程问答-------------------- 嗯,不知道 --------------------编程问答-------------------- 哎.....什么年代啊没个人懂的,还尽出馊主意

用c做这个比较容易,要vb实现最好用现成的控件,用vbMHWB控件吧,自己百度下 --------------------编程问答-------------------- 楼上的真是牛,人家蒋晟N年前就是钻石了,MS的MVP,这方面还没你懂得多???
你用vbmhwb把优酷的视频的声音给我弄没看看? --------------------编程问答-------------------- Attn:18F

就别光说不练啦, 尽出馊主意 ? 一个好灵感与杰作可能是由馊主意得来的, 不是吗 ?

那我再来个馊主意吧.

在IE窗口上端 工具 有个 Internet选项, 下面有 高级, 进去后里面有 播放网页里面的声音 把打勾去掉吧.

不太管用, 呵呵....毕竟只是个馊主意.

--------------------编程问答-------------------- --------------------编程问答-------------------- 广告!!

顶,别沉了! --------------------编程问答-------------------- 只想让自编的浏览器静音,其他不静音! 
---------------------
如果你想用IE控件实现的话是不可能的
但是有两个办法,使用DHTML对象加载,不使用IE控件加载,还有一办法就是自己编一个浏览器,但是你觉得这个有可能的希望吗?
所以....只有使用DHTML对象加载解决才能满足需要 --------------------编程问答-------------------- DHTML对象?望能提供相关帮助或教程等,不胜感激! --------------------编程问答--------------------
引用 19 楼 forbearORfolie 的回复:
楼上的真是牛,人家蒋晟N年前就是钻石了,MS的MVP,这方面还没你懂得多??? 
你用vbmhwb把优酷的视频的声音给我弄没看看?


要视频没声音就要改注册表,你要不下载声音,播放声音用vbmhwb是完全可以实现的,不说废话了

--------------------编程问答--------------------
引用楼主 hei2008s 的帖子:
用vb做浏览器,并让其不播放网页中的声音,如何实现呢? 
应该是用WebBrowser控件吧?或者还有什么更好的解决方案呢? 

问题关键就是能像ie浏览器一样具有不播放网页上的声音的功能?但能播放动画,视频等! 

如何解决呢?


就按照你的要求vbmhwb完全能达到,要向19楼那样无理取闹的要求,你问遍csdn都不会有结果 --------------------编程问答-------------------- 我刚刚想了一下,是不是使用过滤功能把音频过滤了就成?

然而再仔细看了下要求,这种思路不是符合的.

因为楼主要求的貌似是连播放视频时,也不发出声音,是这样的吧?那上面的思路就不行.

我又在想,能不能这样,就是收集常用视频播放对象的控制方法,在程序里检测其存在,然后编程控制它的音量到最小(或静音),这样的思路应该是正确的.

就是不知道能不能实现,好不好实现:)

如果能实现,那再结合上面的"过滤音频文件"思路,不就OK啦~~嘿嘿.

引用 18 楼 startbin 的回复:
哎.....什么年代啊没个人懂的,还尽出馊主意 

用c做这个比较容易,要vb实现最好用现成的控件,用vbMHWB控件吧,自己百度下


//

呵呵,18楼的朋友看你说得这么轻松,那意思就是这个比较容易罗?

这样吧,既然你说比较容易,那么我出价500,来买你的代码,你写完后发在这里就成,怎么样?

对于一个"比较容易"的代码来说,500应该够了吧?

我真是想学到这个招,C语言也可以!

怎么样?!

毕竟这个单独网页静音功能连目前的几大浏览器都还没实现,却在你这里能"比较容易"地搞定,那我可赚了~~:D --------------------编程问答-------------------- 马哥,你终于做实事了!呵呵
思路很好!我这么想过,但不知如何用代码实现啊!

很难的! --------------------编程问答-------------------- 视频中有声音你怎么过滤,只能过滤网页的声音,要对方一个已知的视频播放控件是没问题的,要过滤全部是不现实的,题目都没看清楚就在那瞎叫 --------------------编程问答--------------------
引用 11 楼 hei2008s 的回复:
是从浏览器发出的所有声音!既包括嵌入的声音,也包括各个网页媒体发出的声音,如flash等 

这个问题超难了,说不定放一年也解决不了,期待中……

说我无理取闹,哈哈~~~~~~~~~ --------------------编程问答--------------------
引用 29 楼 startbin 的回复:
视频中有声音你怎么过滤,只能过滤网页的声音,要对方一个已知的视频播放控件是没问题的,要过滤全部是不现实的,
题目都没看清楚就在那瞎叫 --------------------编程问答-------------------- 一天到晚就在那灌水,也没看到你回答出什么来

过滤那优酷网的声音是没问题的,就是看到你这种鸟人在那瞎叫不不爽 --------------------编程问答-------------------- 人品的问题BS --------------------编程问答--------------------
引用 32 楼 startbin 的回复:
一天到晚就在那灌水,也没看到你回答出什么来 

过滤那优酷网的声音是没问题的,就是看到你这种鸟人在那瞎叫不不爽


//

没见我回答什么?不爽?

哈哈.别光耍嘴皮子工夫!!!

不爽,就用代码还击!!! --------------------编程问答-------------------- 对啊!能给出点代码来才能评价啊! --------------------编程问答-------------------- 要像cbm666那样贴出代码啊!感谢cbm666 !  --------------------编程问答-------------------- 昨天晚上就和楼主讨论了一会,希望应该是很渺茫的.

有个不太程序的思路,就是获得播放视频的activex对象,然后用属性控制.但正如16楼所说"你不可能知道ActiveX是不是有音频控制接口",但应该都可调节音量,象老马说的那样,把音量调节到最小。这样做还有个问题,就是播放视频的ActiveX可能有很多种,这在判断的时候就很困难了。不过判断real、WMP、FLASH这三种应该能满足90%的情况。

然后有个不负责任的想法:HOOK住本程序播放声音的API,不让其输出到声卡……(乱说的了,不过印象中VISTA系统好象真能分别控制每个程序的音量——没有求证)

然而比较困惑的是讨论这个技术很好,但为什么或在什么情况下有这样的需求?
--------------------编程问答-------------------- 呵呵,你来了啊,欢迎 --------------------编程问答--------------------
引用 37 楼 hpygzhx520 的回复:
昨天晚上就和楼主讨论了一会,希望应该是很渺茫的. 

有个不太程序的思路,就是获得播放视频的activex对象,然后用属性控制.但正如16楼所说"你不可能知道ActiveX是不是有音频控制接口",但应该都可调节音量,象老马说的那样,把音量调节到最小。这样做还有个问题,就是播放视频的ActiveX可能有很多种,这在判断的时候就很困难了。不过判断real、WMP、FLASH这三种应该能满足90%的情况。 

然后有个不负责任的想法:HOOK住本程序播放…


思想是很好的,但具体要hook哪几个api说说吧,你给思路我帮你完成代码 --------------------编程问答-------------------- 期待中……
继续顶帖! --------------------编程问答-------------------- 冷清啊!还是自己顶一下吧 --------------------编程问答-------------------- 好像做不到,类似Maxthon等浏览器也只能在下载时过滤,而不能在播放时过滤。
而且网页播放控件的音量调节也可能是全局的。 --------------------编程问答-------------------- 那只好这样办吧?
有谁能实现把flash声音禁止呢?像forbearORfolie 所说的把优酷网的声音禁了!
startbin试试看啊! --------------------编程问答-------------------- 再顶! --------------------编程问答-------------------- 继续顶!! --------------------编程问答-------------------- 潜水多年 第一次发帖
这样的思路实现起来难不难?
 
借用37楼的,既然知道网页大面积用realplayer、WMP、FLASH三款做播放器,
视频播放的时候我们能手动设置声音大小,或者静音,那么能不能模拟这个操作,
发送鼠标 键盘指令呢?或者找到接口,设置 对应的值?

本人菜鸟一个,随便说说的,说错了不要笑 :) --------------------编程问答-------------------- 网页中的flash会不会 如果会 那么怎么弄才能 接收到我们发的数据呢?
看到这个帖子:http://topic.csdn.net/u/20080303/23/85991235-556c-4f62-b862-f4c7fba241fa.html
楼主 能成功取得取得Movie属性的值,估计离设置某些值也就不难实现了
研究研究flash的编程,也许会有收获。
--------------------编程问答-------------------- 路过!帮顶! --------------------编程问答--------------------
 把网页中可以发音的东西过滤掉可不可以呢?
   像Flash,WMP插件这些。。不显示这些有可能发音的元素 。 

 如果可以有办法可行。。 --------------------编程问答-------------------- 问题是他想要能播放flash动画啊! --------------------编程问答-------------------- 特别关注,谁能解决这个问题,或者单纯解决flash播放器的声音问题,我所有的分都贡献了 :) --------------------编程问答--------------------
引用 50 楼 bang08 的回复:
问题是他想要能播放flash动画啊!


引用 51 楼 redhub 的回复:
特别关注,谁能解决这个问题,或者单纯解决flash播放器的声音问题,我所有的分都贡献了 :)


不是一般的难噢
Flash有内部的音量控制对象
没有提供接口
现在系统也没有提供某个应用程序或者窗口的音量控制API
不过Vista可以独立控制某个应用程序音量的。。
--------------------编程问答-------------------- 顶一下,不要沉了! --------------------编程问答-------------------- 呵呵,大家一起顶!顶出个结果来 --------------------编程问答--------------------
  高难度问题啊
再帮顶下! --------------------编程问答-------------------- 多好的帖子呀
不要沉了.大家一起搞定.
中午休息时好好想
--------------------编程问答-------------------- --------------------编程问答-------------------- 帮顶下吧。。哎

 再好好想想这个问题。。几乎是不可能的嘛。。
   
   如果系统可以设置某个窗口或者某个进程的声音还行。。至少用API可以解决
     楼上的同志说用HOOK 
      虽然俺没有HOOK实践过。。但至少你HOOK什么东东吧
          像其它的一些音/视频播放软件可以调整自身进程的声音那是他的解码器中有接口可以设置
             像Flash根本没有提供声音相关的接口。而Flash的声音调节是用内部对象(AS脚本对象)实现的,

不过刚才想了下
系统是否有全局消息用来接收各进程或者各窗口的音频信号的呢
如果有的话 这问题应该有解。。
--------------------编程问答-------------------- 楼上有见地!继续顶 --------------------编程问答-------------------- 顶一下,顺便广告一下

一会儿网络:http://1hui2.cn --------------------编程问答--------------------
  “世界之窗”浏览器有静音的选项
 让高人跟踪(传说中听来的)一下他试试吧
也许有结果 --------------------编程问答-------------------- IE设置 --------------------编程问答-------------------- 菜鸟有菜鸟的想法,我的思路是能不能让阅览器调用一块虚拟的声卡,而不是你电脑上正在使用的声卡,那么你打开任何网页都不能听见声音了. --------------------编程问答-------------------- 高难度问题...学习 --------------------编程问答--------------------
引用 63 楼 ssnbcn 的回复:
菜鸟有菜鸟的想法,我的思路是能不能让阅览器调用一块虚拟的声卡,而不是你电脑上正在使用的声卡,那么你打开任何网页都不能听见声音了.

好想法啊!看看其他告诉对这说法如何看,不知能否实现? --------------------编程问答-------------------- 继续顶
一会儿网络:http://1hui2.cn --------------------编程问答-------------------- 唉,还得顶 --------------------编程问答--------------------
引用 63 楼 ssnbcn 的回复:
菜鸟有菜鸟的想法,我的思路是能不能让阅览器调用一块虚拟的声卡,而不是你电脑上正在使用的声卡,那么你打开任何网页都不能听见声音了.

兄弟你太有才了 ,希望有高手能实现! --------------------编程问答-------------------- DD --------------------编程问答-------------------- 呵呵,有搞头了,见:http://1hui2.cn --------------------编程问答-------------------- ls的不厚道 我一直在考虑这个问题
最近有新的进展了 高兴啊 --------------------编程问答-------------------- 有问题请先GOOGLE,BAIDU --------------------编程问答-------------------- 等待牛人来答. --------------------编程问答-------------------- 从这个问题出现开始,偶就潜水在等答案,怎么现在冷下来了呢?已经有达人解决了么? --------------------编程问答-------------------- LZ如果解决了千万记得分享啊。。。
我是想不出办法了。。。 OD不熟。。调试那个世界之窗也无果。。- - --------------------编程问答-------------------- 能不能从程序的进程入手去解决? --------------------编程问答-------------------- 我试过用 api hook 把 waveOutWrite 直接禁止了,flash 声音及 navigate start 等系统声音都可以禁止,不过部份 flash 会中途停止播放。我想更好的方法可能是修改 WaveBuffer,改到没有音量,但我没试过,不知是否可行。当然这亦只是针对了 wave,directx/midi 还要另行解决。 --------------------编程问答-------------------- 我一直在找这样的答案,可惜做不出来,说是楼上说的 --------------------编程问答-------------------- 最近也想搞这个....等有想法的时候再来看看 --------------------编程问答-------------------- 弄出来没有?
最近也在搞这个,也是hook了api 声音函数,不过只对flash有效,wmp的那些hook掉DirectSoundCreate,结果都播放不了了。 --------------------编程问答-------------------- 再顶下, --------------------编程问答--------------------
引用 19 楼 forbearorfolie 的回复:
楼上的真是牛,人家蒋晟N年前就是钻石了,MS的MVP,这方面还没你懂得多???
你用vbmhwb把优酷的视频的声音给我弄没看看?

人家是MVP是不假,但不是每个方面都牛B,

优酷的视频的声音给我弄没
---------------
要不要我给你测试代码,保证把它控制得死死的,随时关随时开 --------------------编程问答-------------------- 怎么这个问题还没解决呢 --------------------编程问答-------------------- 遨游已经解决这个问题了 --------------------编程问答-------------------- 不清楚,看楼的问题只是需要象如MYIE,傲游等那个控制页面是否下载声音吧,不过看下面的讨论地越来越广了 --------------------编程问答-------------------- 帮顶……回复内容太短了! 
--------------------编程问答-------------------- 搜狗浏览器就有个静音功能,可以随时打开关闭,非常方便。真不知道是如何实现的。 --------------------编程问答-------------------- 没想到顶了几年了还是没解决这个问题 --------------------编程问答-------------------- 这个问题我解决一半了,有兴趣加我一起研究 QQ:89617202 --------------------编程问答-------------------- 想要根据当前调用播放声音的调用者回溯查找是哪个进程发起的调用,难度超高啊。

问楼主一个问题:
假设你的所谓静音浏览器和另外一个不静音的浏览器同时播放同一段带声音的视频或同一段MP3,谁能区别此时你的静音浏览器到底是静音还是没静音呢? --------------------编程问答-------------------- --------------------编程问答-------------------- http://topic.csdn.net/u/20090328/11/f70613e8-0ef9-4ac1-978f-3dbeac7c95f4.html

这里有 DELPHI 的解决办法,不是是否完美。盼高手转成 VB 代码 --------------------编程问答-------------------- 这个办法可以静音,却无法立即恢复声音。所以标准的方法应该还是HOOK相关API --------------------编程问答-------------------- 在合适是的时候调用WebBrowser.Stop --------------------编程问答-------------------- hook能实现,就是win7下directx的不知道怎么搞 --------------------编程问答-------------------- 用hook里面的hook API方法,截取程序调用的系统API,然后替换上自己的api,还可以实现音频的重定向,需要了解windows的PE文件以及windows的api,还有win vista,2008,7,的音频管理和Xp等以前版本不同,实现了统一的音频管理,更便于各个模块的音频控制。现在正在研究,有共同研究爱好的朋友可以加QQ(87033922)一块探讨 --------------------编程问答-------------------- 好家伙,三月份的帖子 --------------------编程问答-------------------- 留下你的邮箱,我发你源码,顺便说一下,分我要了 --------------------编程问答-------------------- smart.dj@163.com楼上的朋友给我一份代码 --------------------编程问答-------------------- 这个问题我已经搞定了。
补充:VB ,  网络编程
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,