Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.13;
Скачать: CL | DM;

Вниз

Не работает прога под 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("&#204;&#232;&#234;&#241;&#229;&#240; &#237;&#229; &#237;&#224;&#233;&#228;&#229;&#237; !");
     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 вся ветка

Текущий архив: 2005.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.041 c
14-1106428193
AZ
2005-01-23 00:09
2005.02.13
Фильмы катастроф - добро или зло?


1-1106821362
Жека
2005-01-27 13:22
2005.02.13
Динамическое создание компонент


3-1105636223
tytus
2005-01-13 20:10
2005.02.13
Как лучше удалить записи из БД?


14-1106541978
X9
2005-01-24 07:46
2005.02.13
Работа с LPT-портом под XP


1-1107174744
ТехникПТО
2005-01-31 15:32
2005.02.13
Маленькая проблема