Форум: "Media";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
ВнизНе работает прога под win2k и XP Найти похожие ветки
← →
colonel (2004-10-30 17:32) [0]Суть в следуещем: написал прогу для регулировки звука, но у меня на компе все работает, на компе у соседа работает. Я понес к другим ребятам, там не стала работать, я проверил работает ли хук, хук работает. Потом я обратил внимание на микшер (и у меня и у соседа в микшере написано - Play control, WaveMP3..., не суть важно что дальше, я использую только play control) у других у кого я тестил было написано Громкость....
В чем может быть проблема ?
Привожу исходный код: да сообщение что "миксер не найден" не выскакивает, может я не так читаю данные из микшера (но у меня и соседа пашет):
private
{ Private declarations }
procedure Mix_Volume_Change(var mess:tmessage); message MM_MIXM_CONTROL_CHANGE;
public
{ Public declarations }
procedure FormIcon(var Msg:TMessage); message WM_USER+100;
//procedure CreateParams(var Params:TCreateParams); override;
protected
procedure wndproc(var Msg:tmessage); override;
end;
var
F_Volume:TF_Volume;
mixcaps:TMixerCaps;
hmix,volumeID,volmin,volmax:integer;
details:TMixerControlDetails;
mixctrl:TMixerControl;
valdets:TMixerControlDetailsUnsigned;
curvolume:dword;
svEnable:boolean;
k:byte;
m_ctrl:array [0..255] of TMIXERCONTROL;
mixline:tmixerLine;
mixlinectrl:tmixerLineControls;
nid : TNotifyIconData;
Reg : TRegistry;
left: integer;
a:integer;
b:boolean;
implementation
uses HookInt;
{$R *.dfm}
procedure TF_Volume.Mix_Volume_Change(var mess : TMessage);
begin
if not svenable then exit;
if WindowState=wsMinimized then Exit;
Details.cbStruct:=SizeOf(Details);
Details.dwControlID:=volumeid;
Details.cChannels:=1;
Details.cMultipleItems:=0;
Details.cbDetails:=SizeOf(Valdets);
Details.paDetails:=@valdets;
mixerGetControlDetails(hmix,@details,MIXER_GETCONTROLDETAILSF_VALUE);
CurVolume:=Valdets.dwValue;
end;
procedure TF_Volume.FormDestroy(Sender: TObject);
begin
if not svEnable then exit;
MixerClose(hmix);
inherited;
end;
procedure TF_Volume.FormCreate(Sender: TObject);
var
i:integer;
begin
if not HookStart(handle,"0+106 0+107 0+109") then ShowMessage("Íå ìîãó çàïóñòèòü õóê :-(");
inherited;
MixerOpen(@hmix,0,Handle,0,MIXER_OBJECTF_MIXER or CALLBACK_WINDOW);
MixerGetDevCaps(0,@mixcaps,SizeOf(MixCaps));
for i:=0 to MixCaps.cDestinations-1 do
begin
Mixline.dwDestination:=i;
Mixline.cbStruct:=SizeOf(Mixline);
MixerGetLineInfo(hmix,@mixline,MIXER_GETLINEINFOF_DESTINATION or MIXER_OBJECTF_HMIXER);
if Mixline.dwComponentType=MIXERLINE_COMPONENTTYPE_DST_SPEAKERS then break;
end;
if Mixline.dwComponentType<>MIXERLINE_COMPONENTTYPE_DST_SPEAKERS then
begin
ShowMessage("Ìèêñåð íå íàéäåí !");
svEnable:=false;
exit;
end
else
svEnable:=True;
MixLineCtrl.cbStruct:=SizeOf(MixLineCtrl);
MixLineCtrl.cbmxctrl:=Sizeof(MixCtrl);
MixLineCtrl.dwLineID:=MixLine.dwLineID;
MixLineCtrl.cControls:=mixline.cControls;
MixLineCtrl.pamxctrl:=@m_ctrl;
MixerGetLineControls(hmix,@mixlinectrl,MIXER_GETLINECONTROLSF_ALL);
VolMax:=MixCtrl.Bounds.dwMaximum;
Details.cbStruct:=Sizeof(Details);
Details.dwControlID:=m_ctrl[0].dwControlID;
Details.cChannels:=1;
Details.cMultipleItems:=0;
Details.cbDetails:=SizeOf(Valdets);
Details.paDetails:=@valdets;
MixerGetControlDetails(hmix,@details,0);
CurVolume:=Valdets.dwValue;
end;
procedure tF_Volume.min_volume(Sender: TObject);
var
vol:integer;
begin
if not svEnable then exit;
Details.cbStruct:=SizeOf(Details);
Details.dwControlID:=volumeid;
details.cChannels:=1;
Details.cMultipleItems:=0;
Details.cbDetails:=SizeOf(Valdets);
Details.paDetails:=@Valdets;
vol:=valdets.dwValue;
if valdets.dwValue>0 then begin
if vol-1310<0 then valdets.dwValue:=0
else valdets.dwValue:=valdets.dwValue-1310;
end;
MixerSetControlDetails(hmix,@details,MIXER_SETCONTROLDETAILSF_VALUE);
end;
procedure tF_Volume.max_volume(Sender: TObject);
var
vol:integer;
begin
if not svEnable then exit;
Details.cbStruct:=SizeOf(Details);
Details.dwControlID:=volumeid;
Details.cChannels:=1;
Details.cMultipleItems:=0;
Details.cbDetails:=SizeOf(Valdets);
Details.paDetails:=@Valdets;
vol:=valdets.dwValue;
if valdets.dwValue>=0 then begin
if vol+1310>65535 then valdets.dwValue:=65535
else valdets.dwValue:=valdets.dwValue+1310;
end;
MixerSetControlDetails(hmix,@details,MIXER_SETCONTROLDETAILSF_VALUE);
end;
procedure tF_Volume.mute_volume(Sender: TObject);
begin
if not svEnable then exit;
Details.cbStruct:=SizeOf(Details);
Details.dwControlID:=volumeid;
Details.cChannels:=1;
Details.cMultipleItems:=0;
Details.cbDetails:=SizeOf(Valdets);
Details.paDetails:=@Valdets;
if k=0 then begin
Valdets.dwValue:=1;
k:=1;
end else begin
volumeid:=m_ctrl[0].dwControlID;
Valdets.dwValue:=0;
k:=0;
end;
MixerSetControlDetails(hmix,@details,0);
end;
procedure TF_Volume.FormActivate(Sender: TObject);
begin
icon_(self,nim_add);
showform(sw_hide,false);
application.ShowMainForm:=false;
end;
end.
← →
Digitman © (2004-11-01 16:22) [1]
> там не стала работать
так и сказала, мол, работать не стану ... я угадал ?
> проверил работает ли хук, хук работает
какой такой "хук" ?
HookStart мне ни о чем не говорит
> inherited;
а это зачем ? можешь вразумительно объяснить, какой такой наследуемый метод ты здесь пытаешься вызвать ?
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2005.02.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c