WinAPI

KOsyak
7/16/2006, 3:49:06 PM
Тут периодически копаюсь с winapi... Люди - как добраться через winapi До системной громкости звуков? :))) ну не могу я понять никак :(...


и второй - можно ли через winapi ... эээ.. подключить вторую мышь к компу так, что бы она не работала, но параметры перемещения с нее считать можно было angel_hypocrite.gif ... хоть направление поиска
DELETED
7/16/2006, 4:05:11 PM
(Kosyak @ 16.07.2006 - время: 11:49)Тут периодически копаюсь с winapi... Люди - как добраться через winapi  До системной громкости звуков? :))) ну не могу я понять никак :(...

Библиотека Winmm.
CODE
#include <windows.h>
#include <mmsystem.h>
#include <mmreg.h>

extern const CHAR *    pszPrgName;

static        HMIXER                gs_hMixer;
static        MIXERCONTROLDETAILS gs_mxcd;


BOOL
InitVolume()
{
   MMRESULT r;
   MIXERLINECONTROLS    mxlc;
   MIXERLINE            mxl;
   MIXERCONTROL        mxc;        
   
   r = mixerOpen(&gs_hMixer, 0, 0, 0, 0);
   if (r != MMSYSERR_NOERROR) {
       MessageBox(NULL, "Couldn't open mixer.", pszPrgName, MB_OK);
       return FALSE;
   }    
   ZeroMemory(&mxl,sizeof(mxl));
   mxl.cbStruct = sizeof(mxl);  
   mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;
   mixerGetLineInfo((HMIXEROBJ)gs_hMixer, &mxl,
                          MIXER_GETLINEINFOF_COMPONENTTYPE);    
   ZeroMemory(&mxlc, sizeof(mxlc));
   mxlc.cbStruct = sizeof(mxlc);
   mxlc.dwLineID = mxl.dwLineID;
   mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;
   //mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_DECIBELS;
   mxlc.cControls = 1;
   mxlc.cbmxctrl = sizeof(mxc);
   mxlc.pamxctrl = &mxc;
   ZeroMemory(&mxc, sizeof(mxc));
   mxc.cbStruct = sizeof(mxc);    
   mixerGetLineControls((HMIXEROBJ)gs_hMixer,&mxlc,
                              MIXER_GETLINECONTROLSF_ONEBYTYPE);

   ZeroMemory(&gs_mxcd, sizeof(gs_mxcd));
   gs_mxcd.cbStruct = sizeof(gs_mxcd);
   gs_mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);
   gs_mxcd.dwControlID = mxc.dwControlID;
   gs_mxcd.cChannels = 1;

   return TRUE;
}

void
CloseVolume()
{
   mixerClose(gs_hMixer);
}

DWORD
GetVolume()
{
   MIXERCONTROLDETAILS_UNSIGNED volStruct;
   DWORD    volume;

   gs_mxcd.paDetails = &volStruct;
   mixerGetControlDetails((HMIXEROBJ)gs_hMixer, &gs_mxcd,
                                MIXER_GETCONTROLDETAILSF_VALUE);
   volume = volStruct.dwValue;    
   return volume;
}

void
SetVolume(DWORD volume)
{
   MIXERCONTROLDETAILS_UNSIGNED volStruct;    
   ZeroMemory(&volStruct, sizeof volStruct);
   gs_mxcd.paDetails = &volStruct;
   volStruct.dwValue = volume;    
   mixerSetControlDetails((HMIXEROBJ)gs_hMixer, &gs_mxcd, 0);
                                //MIXER_SETCONTROLDETAILSF_VALUE);
}


(Kosyak @ 16.07.2006 - время: 11:49)и второй - можно ли через winapi ... эээ.. подключить вторую мышь к компу так, что бы она не работала, но параметры перемещения с нее считать можно было angel_hypocrite.gif ... хоть направление поиска
Windows всех версий не поддерживает двух курсоров мыши одновременно. Максимум чего можно добиться - это управление одним курсором двуми или более манипуляторами.
KOsyak
7/17/2006, 4:39:36 AM
GregZ а там в примере где вызов API в чистом виде? там сразу работа со структурой play_ball.gif


то что не поддерживает - я и сам зна... но сделать это можно pardon.gif ... меня интересует работа с самой мышью. Точнее работа API с физическим устройством - реально ли это ?
DELETED
7/17/2006, 5:13:51 AM
(Kosyak @ 17.07.2006 - время: 00:39)GregZ а там в примере где вызов API в чистом виде? там сразу работа со структурой play_ball.gif
Обрати внимание на функции семейства mixerXXX. Я привел лишь более удобные обертки.

(Kosyak @ 17.07.2006 - время: 00:39)GregZто что не поддерживает - я и сам зна... но сделать это можно pardon.gif ... меня интересует работа с самой мышью. Точнее работа API с физическим устройством - реально ли это ?
В API пободного нет. Допускаю, что проблему можно решить написав соответствующий требованиям драйвер устройства.
KOsyak
7/17/2006, 1:36:15 PM
GregZ Хм.... а как они в системе объявлены ? ... второе - пример громоздкий все равно получается....


с драйвером понял 08.gif
DELETED
7/18/2006, 2:11:37 AM
(Kosyak @ 17.07.2006 - время: 09:36)GregZ Хм.... а как они в системе объявлены ? ... второе - пример громоздкий все равно получается....

Я тебя не понял. Объявления функций API находятся в заголовочных файлах Mmsystem.h и Mmreg.h

При работе с функциями API приходится заполнять очень много структур, в следствие чего код неизбежно получается объемным.
xTriplex
7/19/2006, 4:21:26 AM
1 - ну по поводу звука те уже ответили...добавить нечего...

2 - возьми ком мышку старую и найди в инете описалово работы с ком портом и читай себе сигналы на здоровье...это просто...

Встречный вопрос по API.
Возможно ли взять через API спектр звукового сигнала, чтоб по полученным значениям нарисовать что-то типа как в винамповский спектр...

Заранее спасибо.
DELETED
7/20/2006, 4:19:27 PM
https://www.codeproject.com/audio/oscilloscope.asp
xTriplex
7/21/2006, 4:04:32 AM
(JeyLo @ 20.07.2006 - время: 12:19) https://www.codeproject.com/audio/oscilloscope.asp
Спасибо...и здесь и в репутаци...то что доктор прописал... 0096.gif
DELETED
7/21/2006, 4:23:04 PM
u're welcome wink.gif
c0d3r
9/13/2006, 10:18:30 PM
лучше справочника по апи чем https://msdn.microsoft.com не найдёшь :)
c0d3r
9/13/2006, 10:21:14 PM
вот есть ещё маааленький офлайн справочник https://www.web-hack.ru/books/books.php?go=2
ЙоджЫк
5/9/2007, 2:11:08 AM
Прив. Вопрос. Каким чудом можно прочитать очередь печати и узнать количество напечатанных страниц в Delphi 7. Срочно нужно для работы.
DELETED
5/9/2007, 3:53:43 PM
(ЙоджЫк @ 08.05.2007 - время: 22:11) Прив. Вопрос. Каким чудом можно прочитать очередь печати и узнать количество напечатанных страниц в Delphi 7. Срочно нужно для работы.
MSDN уже отменили? Используйте функцию винпринтспулера EnumJobs.