информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 С наступающим 
 Microsoft обещает радикально усилить... 
 Ядро Linux избавляется от российских... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / beginners
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Господа, будьте снисходительны, не бросайтесь сразу штрафовать за, как вам кажется, глупые вопросы - beginners на то и beginners.
сорри но на делфи переводить не буду Ж) 20.07.04 13:27  Число просмотров: 1636
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
//---------------------------------------------------------------------------


#include "windows.h"
#include "mmsystem.h"
#pragma hdrstop

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
void __fastcall OpenAudioMixer(HMIXER &hMixer, DWORD &id, DWORD dwComponentType)
{
MMRESULT rc; // Return code.
MIXERCONTROL mxc; // Holds the mixer control data.
MIXERLINE mxl; // Holds the mixer line data.
MIXERLINECONTROLS mxlc; // Obtains the mixer control.

rc = mixerOpen(&hMixer, 0,0,0,0);
if (MMSYSERR_NOERROR == rc) {
// Couldn't open the mixer.
}

// Initialize MIXERLINE structure.
ZeroMemory(&mxl,sizeof(mxl));
mxl.cbStruct = sizeof(mxl);

mxl.dwComponentType = dwComponentType;

rc = mixerGetLineInfo((HMIXEROBJ)hMixer, &mxl,
MIXER_GETLINEINFOF_COMPONENTTYPE);
if (MMSYSERR_NOERROR == rc) {
// Couldn't get the mixer line.
}

// Get the control.
ZeroMemory(&mxlc, sizeof(mxlc));
mxlc.cbStruct = sizeof(mxlc);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;

mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(mxc);
mxlc.pamxctrl = &mxc;
ZeroMemory(&mxc, sizeof(mxc));
mxc.cbStruct = sizeof(mxc);
rc = mixerGetLineControls((HMIXEROBJ)hMixer,&mxlc,
MIXER_GETLINECONTROLSF_ONEBYTYPE);
if (MMSYSERR_NOERROR == rc) {
// Couldn't get the control. MIXERR_INVALCONTROL
}

id = mxc.dwControlID;
}

DWORD __fastcall GetVolume(HMIXER hMixer, DWORD id)
{
MMRESULT rc; // Return code.
MIXERCONTROLDETAILS mxcd; // Gets the control values.
MIXERCONTROLDETAILS_SIGNED volStruct[2]; // Gets the control values.

ZeroMemory(&mxcd, sizeof(mxcd));
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(volStruct);
mxcd.dwControlID = id;
mxcd.paDetails = &volStruct;
mxcd.cChannels = 2;
volStruct[0].lValue=0;
volStruct[1].lValue=0;
rc = mixerGetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_GETCONTROLDETAILSF_VALUE);

if (MMSYSERR_NOERROR == rc) {
return MAKELONG(volStruct[0].lValue, volStruct[1].lValue);
}
return -1;
}

int __fastcall SetVolume(HMIXER hMixer, DWORD id, DWORD vol)
{
MMRESULT rc; // Return code.
MIXERCONTROLDETAILS mxcd; // Gets the control values.
MIXERCONTROLDETAILS_SIGNED volStruct[2]; // Gets the control values.

ZeroMemory(&mxcd, sizeof(mxcd));
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(volStruct);
mxcd.dwControlID = id;
mxcd.paDetails = &volStruct;
mxcd.cChannels = 2;
volStruct[0].lValue=LOWORD(vol);
volStruct[1].lValue=HIWORD(vol);
rc = mixerSetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
if (MMSYSERR_NOERROR == rc) {
return 0;
}
return -1;
}

int __fastcall changevolume(int delta)
{
int ret=0;
HMIXER hMix = NULL;
DWORD id;
OpenAudioMixer(hMix, id, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS);
if(hMix)
{
DWORD vol=GetVolume(hMix, id);
int vol1=(vol&0xffff);
int vol2=((vol>>16)&0xffff);
vol1+=delta;vol2+=delta;
if(vol1<0)vol1=0;else
if(vol1>65535)vol1=65535;
if(vol2<0)vol2=0;else
if(vol2>65535)vol2=65535;
ret=(vol1+vol2)>>1;
vol=vol2;vol=(vol<<16)|vol1;
SetVolume(hMix, id, vol);
mixerClose(hMix);
}
return ret;
}
<beginners>
Мне требуется посредством Delphi управлять виндовым «регулятором громкости», подскажите как реализуется, пожалуйста. 20.07.04 12:47  
Автор: !? <!?> Статус: Member
<"чистая" ссылка>
сорри но на делфи переводить не буду Ж) 20.07.04 13:27  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
//---------------------------------------------------------------------------


#include "windows.h"
#include "mmsystem.h"
#pragma hdrstop

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
void __fastcall OpenAudioMixer(HMIXER &hMixer, DWORD &id, DWORD dwComponentType)
{
MMRESULT rc; // Return code.
MIXERCONTROL mxc; // Holds the mixer control data.
MIXERLINE mxl; // Holds the mixer line data.
MIXERLINECONTROLS mxlc; // Obtains the mixer control.

rc = mixerOpen(&hMixer, 0,0,0,0);
if (MMSYSERR_NOERROR == rc) {
// Couldn't open the mixer.
}

// Initialize MIXERLINE structure.
ZeroMemory(&mxl,sizeof(mxl));
mxl.cbStruct = sizeof(mxl);

mxl.dwComponentType = dwComponentType;

rc = mixerGetLineInfo((HMIXEROBJ)hMixer, &mxl,
MIXER_GETLINEINFOF_COMPONENTTYPE);
if (MMSYSERR_NOERROR == rc) {
// Couldn't get the mixer line.
}

// Get the control.
ZeroMemory(&mxlc, sizeof(mxlc));
mxlc.cbStruct = sizeof(mxlc);
mxlc.dwLineID = mxl.dwLineID;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;

mxlc.cControls = 1;
mxlc.cbmxctrl = sizeof(mxc);
mxlc.pamxctrl = &mxc;
ZeroMemory(&mxc, sizeof(mxc));
mxc.cbStruct = sizeof(mxc);
rc = mixerGetLineControls((HMIXEROBJ)hMixer,&mxlc,
MIXER_GETLINECONTROLSF_ONEBYTYPE);
if (MMSYSERR_NOERROR == rc) {
// Couldn't get the control. MIXERR_INVALCONTROL
}

id = mxc.dwControlID;
}

DWORD __fastcall GetVolume(HMIXER hMixer, DWORD id)
{
MMRESULT rc; // Return code.
MIXERCONTROLDETAILS mxcd; // Gets the control values.
MIXERCONTROLDETAILS_SIGNED volStruct[2]; // Gets the control values.

ZeroMemory(&mxcd, sizeof(mxcd));
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(volStruct);
mxcd.dwControlID = id;
mxcd.paDetails = &volStruct;
mxcd.cChannels = 2;
volStruct[0].lValue=0;
volStruct[1].lValue=0;
rc = mixerGetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_GETCONTROLDETAILSF_VALUE);

if (MMSYSERR_NOERROR == rc) {
return MAKELONG(volStruct[0].lValue, volStruct[1].lValue);
}
return -1;
}

int __fastcall SetVolume(HMIXER hMixer, DWORD id, DWORD vol)
{
MMRESULT rc; // Return code.
MIXERCONTROLDETAILS mxcd; // Gets the control values.
MIXERCONTROLDETAILS_SIGNED volStruct[2]; // Gets the control values.

ZeroMemory(&mxcd, sizeof(mxcd));
mxcd.cbStruct = sizeof(mxcd);
mxcd.cbDetails = sizeof(volStruct);
mxcd.dwControlID = id;
mxcd.paDetails = &volStruct;
mxcd.cChannels = 2;
volStruct[0].lValue=LOWORD(vol);
volStruct[1].lValue=HIWORD(vol);
rc = mixerSetControlDetails((HMIXEROBJ)hMixer, &mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
if (MMSYSERR_NOERROR == rc) {
return 0;
}
return -1;
}

int __fastcall changevolume(int delta)
{
int ret=0;
HMIXER hMix = NULL;
DWORD id;
OpenAudioMixer(hMix, id, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS);
if(hMix)
{
DWORD vol=GetVolume(hMix, id);
int vol1=(vol&0xffff);
int vol2=((vol>>16)&0xffff);
vol1+=delta;vol2+=delta;
if(vol1<0)vol1=0;else
if(vol1>65535)vol1=65535;
if(vol2<0)vol2=0;else
if(vol2>65535)vol2=65535;
ret=(vol1+vol2)>>1;
vol=vol2;vol=(vol<<16)|vol1;
SetVolume(hMix, id, vol);
mixerClose(hMix);
}
return ret;
}
попытаюсь.. 20.07.04 13:33  
Автор: !? <!?> Статус: Member
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach