常用于 WebBrowser控件后台打开网页时,需要屏蔽网页的视频声音
function DSoundsCode():Integer ;stdcall;
var
hDSound: Cardinal;
pDirectSoundCreate: Pointer;
lp: Cardinal;
begin
if Win32MajorVersion >= 6 then //Vista以上的操作系统
begin
Result := Integer(ControlVolume.SetVolumeMute(Master,True));
Exit;
end;
hDSound := GetModuleHandle(‘DSound.dll’);
if hDSound = 0 then hDSound := LoadLibrary(‘DSound.dll’);
if hDSound > 0 then
begin
pDirectSoundCreate := GetProcAddress(hDSound, ‘DirectSoundCreate’);
if Assigned(pDirectSoundCreate) then
begin
VirtualProtect(pDirectSoundCreate, 3, PAGE_EXECUTE_READWRITE, lp);
Move(#$C2#$0C#$00, pDirectSoundCreate^, 3);
end;
end;
hDSound := GetModuleHandle(‘Winmm.dll’);
if hDSound = 0 then hDSound := LoadLibrary(‘Winmm.dll’);
if hDSound > 0 then
begin
pDirectSoundCreate := GetProcAddress(hDSound, ‘midiStreamOpen’);
if Assigned(pDirectSoundCreate) then
begin
VirtualProtect(pDirectSoundCreate, 3, PAGE_EXECUTE_READWRITE, lp);
Move(#$C2#$04#$00, pDirectSoundCreate^, 3);
end;
pDirectSoundCreate := GetProcAddress(hDSound, ‘waveOutWrite’);
if Assigned(pDirectSoundCreate) then
begin
VirtualProtect(pDirectSoundCreate, 3, PAGE_EXECUTE_READWRITE, lp);
Move(#$C2#$0C#$00, pDirectSoundCreate^, 3);
end;
end;
Result := 1597;
end;