如何屏蔽webBrowser打开网页的所有声音

 我来答
撕烂你的贝塔cx
2018-06-28 · TA获得超过3943个赞
知道大有可为答主
回答量:2061
采纳率:70%
帮助的人:1270万
展开全部
可以通过浏览器控件来设置下载,显示设置和执行的控制权。 为了要得到这些控制,实现宿主的IDispatch接口,使得它处理DISPID_AMBIENT_DLCONTROL。当浏览器控件被实例化的时候,它将会以这一个ID调用的IDispatch::Invoke。将pvarResult设置为下列的标识的一个位与的组合,指明的配置。

DLCTL_DLIMAGES , DLCTL_VIDEOS 和 DLCTL_BGSOUNDS: 如果这些标识被设定,图像,视频和背景音乐将会被从服务器下载并且显示或播放,否则将不被下载和显示。
DLCTL_NO_SCRIPTS 和 DLCTL_NO_JAVA: 脚本和Java小程序将不被运行。
DLCTL_NO_DLACTIVEXCTLS 和 DLCTL_NO_RUNACTIVEXCTLS: ActiveX 控件将不被下载或者运行。
DLCTL_DOWNLOADONLY: 网页只将会被下载,不显示。
DLCTL_NO_FRAMEDOWNLOAD:浏览器控件将会下载并且解析框架集页面,但是不会下载和解析框架集中单独的框架。
DLCTL_RESYNCHRONIZE 和 DLCTL_PRAGMA_NO_CACHE: 这些标志导致Internet缓冲的刷新。通过 DLCTL_RESYNCHRONIZE,服务器将会被请求更新状态。如果服务器指出缓存信息是最新的,将会使用 缓存文件。通过DLCTL_PRAGMA_NO_CACHE,不管文件的更新状态如何,文件都会被从服务器重新下载。
DLCTL_NO_BEHAVIORS: 行为不被下载并且在文件中被禁用。
DLCTL_NO_METACHARSET_HTML: 忽略在META元素中指明的字符集。
DLCTL_URL_ENCODING_DISABLE_UTF8 和 DLCTL_URL_ENCODING_ENABLE_UTF8: 这些标志的功能类似于IDocHostUIHandler::GetHostInfo中使用的DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8 和DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8标志。不同是只有在浏览器控件被初始化的时候,DOCHOSTUIFLAG标志才会被检查。这里的环境特性变化的下载标志在每当浏览器控件需要运行一个下载时被检查。
DLCTL_NO_CLIENTPULL: 不运行客户端重定位页面操作(译者注:例如<meta http-equiv="refresh" content="30"> 的默认行为)。
DLCTL_SILENT: 在下载期间没有用户界面显示。
DLCTL_FORCEOFFLINE: 浏览器控件总是在脱机模式中操作。
DLCTL_OFFLINEIFNOTCONNECTED 和 DLCTL_OFFLINE: 这些标志是相同的。如果不连接到英特网,浏览器控件将会在脱机模式中操作。
DISPID_AMBIENT_DLCONTROL和标志的数值是在mshtmdid.h被定义的。

最初,当对IDispatch::Invoke调用开始的时候, pvarResult参数指向的VARIANT是VT_EMPTY类型。 必须为任何有效的设定设置它为VT_I4类型。可以在VARIANT的lVal成员中存储标志数值。

大部份标志数值有否定的效果,也就是说,他们避免行为正常地发生。举例来说,如果不自定义浏览器控件行为,那么通常脚本会被执行。 但是如果设定DLCTL_NOSCRIPTS 标志,脚本将不会在控制的那个实例中运行。然而,三个标志— DLCTL_DLIMAGES , DLCTL_VIDEOS 和 DLCTL_BGSOUNDS的作用正好相反。必须全部设置标志,使得浏览器控件以它的默认行为执行关于图像,视频和声音的处理。

下列示例代码使得一个浏览器控件实例下载并且显示图像和视频,但是不处理背景音乐,因为DLCTL_BGSOUNDS没有被明确地设定。浏览器控件显示的页上的脚本运行被禁用。

例子

STDMETHODIMP CAtlBrCon::Invoke(DISPID dispidMember, REFIID riid,

LCID lcid, WORD wFlags,

DISPPARAMS* pDispParams,

VARIANT* pvarResult,

EXCEPINFO* pExcepInfo,

UINT* puArgErr)

{

switch (dispidMember)

{

case DISPID_AMBIENT_DLCONTROL:

pvarResult->vt = VT_I4;

pvarResult->lVal = DLCTL_DLIMAGES

DLCTL_VIDEOS

DLCTL_NO_SCRIPTS;

break;

default:

return DISP_E_MEMBERNOTFOUND;

}

return S_OK;

}
匿名用户
2014-12-09
展开全部
internet选项-高级-把"播放网页中的声音"的勾去掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huanglenzhi
推荐于2016-06-17 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517193
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
procedure TForm1.FormCreate(Sender: TObject);
var
hDSound: Cardinal;
pDirectSoundCreate: Pointer;
hWinmm: Cardinal;
pmidiStreamOpen: Pointer;
pwaveOutWrite: Pointer;
lp: Cardinal;
begin
hDSound := LoadLibrary('DSound.dll');
if hDSound > 0 then
pDirectSoundCreate := GetProcAddress(hDSound, 'DirectSoundCreate');
if pDirectSoundCreate <> nil then
begin
VirtualProtect(pDirectSoundCreate, 3, PAGE_EXECUTE_READWRITE, lp);
Move(#$C2#$0C#$00, pDirectSoundCreate^, 3);
end;

hWinmm := LoadLibrary('Winmm.dll');
if hWinmm > 0 then
pmidiStreamOpen := GetProcAddress(hWinmm, 'midiStreamOpen');
if pmidiStreamOpen <> nil then
begin
VirtualProtect(pmidiStreamOpen, 3, PAGE_EXECUTE_READWRITE, lp);
Move(#$C2#$04#$00, pmidiStreamOpen^, 3);
end;

if hWinmm > 0 then
pwaveOutWrite := GetProcAddress(hWinmm, 'waveOutWrite');
if pwaveOutWrite <> nil then
begin
VirtualProtect(pwaveOutWrite, 3, PAGE_EXECUTE_READWRITE, lp);
Move(#$C2#$0C#$00, pwaveOutWrite^, 3);
end;
end;
这是高手编辑的代码,转载供你参考
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式