Xp下 Webbrowser 静音解决思路
Xp下 Webbrowser 静音
var
DllModule:Cardinal;
dwReserved:DWORD;
begin
// EnableMute(True);
if Buttoncbl.Hint = '未静音' then
begin
DllModule:= loadLibrary('Winmm.dll');
if DllModule > 0 then
BaseAddr:= GetProcAddress(DllModule,'waveOutWrite');
hProcess:=GetCurrentProcess;
NewAddr.MovEax:=$B8;
NewAddr.Addr:=DWORD(@_waveOutWrite);
NewAddr.JmpCode:=$E0FF;
ReadOK:=ReadProcessMemory(hProcess,BaseAddr,@OldAddr,8,dwReserved);
(保存原来的地址)
if ReadOK = False then exit;
WriteProcessMemory(hProcess,BaseAddr,@NewAddr,8,dwReserved);
(写入新地址)
Buttoncbl.Hint:= '已静音';
end else
begin
WriteProcessMemory(hProcess,BaseAddr,@OldAddr,8,dwReserved);
(恢复原来的地址)
Buttoncbl.Hint:= '未静音';
end;
上面的代码可以实现静音,但不能恢复,怎么才可以立即恢复声音?
------解决方案--------------------
取消挂钩不就得了
------解决方案--------------------
估计是哪里copy的代码,楼主自己都看不懂是什么意思吧,你说“取消挂钩”他是不明白的。。。![Xp下 Webbrowser 静音解决思路 Xp下 Webbrowser 静音解决思路](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDE0LzAyLzIzLzEyNDQ0MTQzNDEuZ2lm)
我以前也弄过一个,可以参考一下,不过后来flash升级后好像是失效了,可能还要挂其他函数吧。
http://blog.csdn.net/aqtata/article/details/8112092
------解决方案--------------------
IE静音除了Winmm.dll的waveOutWrite函数外,还要hook dsound.dll的DirectSoundCreate
------解决方案--------------------
我自己写了个测试HOOK IE里的优酷视频,静音和恢复静音都没问题,也没有hook DirectSoundCreate,vista\win7才需要hook DirectSoundCreate吧。
需要注意的是hook和unhook时再向目标进程发送一个WM_SETTINGCHANGE消息,不然静音切换会有1,2秒的延时。
var
DllModule:Cardinal;
dwReserved:DWORD;
begin
// EnableMute(True);
if Buttoncbl.Hint = '未静音' then
begin
DllModule:= loadLibrary('Winmm.dll');
if DllModule > 0 then
BaseAddr:= GetProcAddress(DllModule,'waveOutWrite');
hProcess:=GetCurrentProcess;
NewAddr.MovEax:=$B8;
NewAddr.Addr:=DWORD(@_waveOutWrite);
NewAddr.JmpCode:=$E0FF;
ReadOK:=ReadProcessMemory(hProcess,BaseAddr,@OldAddr,8,dwReserved);
(保存原来的地址)
if ReadOK = False then exit;
WriteProcessMemory(hProcess,BaseAddr,@NewAddr,8,dwReserved);
(写入新地址)
Buttoncbl.Hint:= '已静音';
end else
begin
WriteProcessMemory(hProcess,BaseAddr,@OldAddr,8,dwReserved);
(恢复原来的地址)
Buttoncbl.Hint:= '未静音';
end;
上面的代码可以实现静音,但不能恢复,怎么才可以立即恢复声音?
------解决方案--------------------
取消挂钩不就得了
------解决方案--------------------
估计是哪里copy的代码,楼主自己都看不懂是什么意思吧,你说“取消挂钩”他是不明白的。。。
我以前也弄过一个,可以参考一下,不过后来flash升级后好像是失效了,可能还要挂其他函数吧。
http://blog.csdn.net/aqtata/article/details/8112092
------解决方案--------------------
IE静音除了Winmm.dll的waveOutWrite函数外,还要hook dsound.dll的DirectSoundCreate
------解决方案--------------------
我自己写了个测试HOOK IE里的优酷视频,静音和恢复静音都没问题,也没有hook DirectSoundCreate,vista\win7才需要hook DirectSoundCreate吧。
需要注意的是hook和unhook时再向目标进程发送一个WM_SETTINGCHANGE消息,不然静音切换会有1,2秒的延时。