application.messagebox hakkında
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
application.messagebox hakkında
Sel.al.arkadaşlar.forumda aradım ama bulamadım.application.messagebox ile bi mesaj verdiriyorum.yalnız mesaj ekranda görüntülendği anda dınk diye hoparlörden bi uyarı sesi geliyor.bu sesin çıkmasını nasıl engellerim .
Bir yerlerde okumuştum , messagebox komutunu göndermeden önce Stereo Mixer'e Mute komutu gönderiliyordu.Eğer Registry'den silme işlemi yaparsan bütün sistem mesajlarını susturmuş olursun.
Aşağıdaki Kod Delphi 6 ile denendi ve çalışıyor.Ben kendim 2 button atadım ve winamp şarkı çalarken ben bu programla sesi kapatıp açtım.
Aşağıdaki Kod Delphi 6 ile denendi ve çalışıyor.Ben kendim 2 button atadım ve winamp şarkı çalarken ben bu programla sesi kapatıp açtım.
Kod: Tümünü seç
// Enable/disable "Mute" for several mixer line sources.
uses
MMSystem;
type
TMixerLineSourceType = (lsDigital, lsLine, lsMicrophone, lsCompactDisk, lsTelephone,
lsWaveOut, lsAuxiliary, lsAnalog, lsLast);
function SetMixerLineSourceMute(AMixerLineSourceType: TMixerLineSourceType; bMute: Boolean): Boolean;
var
hMix: HMIXER;
mxlc: MIXERLINECONTROLS;
mxcd: TMIXERCONTROLDETAILS;
vol: TMIXERCONTROLDETAILS_UNSIGNED;
mxc: MIXERCONTROL;
mxl: TMixerLine;
intRet: Integer;
nMixerDevs: Integer;
mcdMute: MIXERCONTROLDETAILS_BOOLEAN;
begin
Result := False;
// Check if Mixer is available
// Überprüfen, ob ein Mixer vorhanden ist
nMixerDevs := mixerGetNumDevs();
if (nMixerDevs < 1) then
begin
Exit;
end;
// open the mixer
// Mixer öffnen
intRet := mixerOpen(@hMix, 0, 0, 0, 0);
if intRet = MMSYSERR_NOERROR then
begin
ZeroMemory(@mxl, SizeOf(mxl));
case AMixerLineSourceType of
lsDigital: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_DIGITAL;
lsLine: mxl.dwComponentType := MIXERLINE_COMPONENTTYPE_SRC_LINE;
lsMicrophone: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE;
lsCompactDisk: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_COMPACTDISC;
lsTelephone: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_TELEPHONE;
lsWaveOut: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT;
lsAuxiliary: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_AUXILIARY;
lsAnalog : mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_ANALOG;
lsLast: mxl.dwComponentType :=MIXERLINE_COMPONENTTYPE_SRC_LAST;
end;
// mixerline info
mxl.cbStruct := SizeOf(mxl);
intRet := mixerGetLineInfo(hMix, @mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);
if intRet = MMSYSERR_NOERROR then
begin
ZeroMemory(@mxlc, SizeOf(mxlc));
mxlc.cbStruct := SizeOf(mxlc);
mxlc.dwLineID := mxl.dwLineID;
mxlc.dwControlType := MIXERCONTROL_CONTROLTYPE_MUTE;
mxlc.cControls := 1;
mxlc.cbmxctrl := SizeOf(mxc);
mxlc.pamxctrl := @mxc;
// Get the mute control
// Mute control ermitteln
intRet := mixerGetLineControls(hMix, @mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE);
if intRet = MMSYSERR_NOERROR then
begin
ZeroMemory(@mxcd, SizeOf(mxcd));
mxcd.cbStruct := SizeOf(TMIXERCONTROLDETAILS);
mxcd.dwControlID := mxc.dwControlID;
mxcd.cChannels := 1;
mxcd.cbDetails := SizeOf(MIXERCONTROLDETAILS_BOOLEAN);
mxcd.paDetails := @mcdMute;
mcdMute.fValue := Ord(bMute);
// set, unset mute
// Stumsschalten ein/aus
intRet := mixerSetControlDetails(hMix, @mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
{
mixerGetControlDetails(hMix, @mxcd, IXER_GETCONTROLDETAILSF_VALUE);
Result := Boolean(mcdMute.fValue);
}
Result := intRet = MMSYSERR_NOERROR;
if intRet <> MMSYSERR_NOERROR then
ShowMessage('SetControlDetails Error');
end
else
ShowMessage('GetLineInfo Error');
end;
intRet := mixerClose(hMix);
end;
end;
// Example Call; Beispielaufruf:
procedure TForm1.Button1Click(Sender: TObject);
begin
// Ton ausschalten
SetMixerLineSourceMute(lsWaveOut, True); //Sesi Kapatmak için
// SetMixerLineSourceMute(lsWaveOut, False); //Sesi Açmak için
end;