torun Posted February 8, 2008 Share Posted February 8, 2008 (edited) I am trying to get this to work, but the dllcall to waveInOpen returns 11 (MMSYSERR_INVALPARAM). The original pieces are in comments. Must be somewhere the assignments of variable types. A second question: in the msgbox I have to use $mmresult[0] instead of $mmresult, otherwise it won't work, why? expandcollapse popup#Include <GUIConstants.au3> Opt( "GUIOnEventMode", 1 ) Dim $mmResult Dim $hwavein Const $WAVE_FORMAT_PCM = 1 Const $WAVE_MAPPER = -1 Const $CALLBACK_NULL = 0 $Form1 = GUICreate("WAVEIN", 281, 197, 193, 115) $Button1 = GUICtrlCreateButton("Start", 0, 120, 89, 33, 0) $Button2 = GUICtrlCreateButton("Stop", 96, 120, 89, 33, 0) GUISetState(@SW_SHOW) GUICtrlSetOnEvent ( $Button1, "start" ) GUICtrlSetOnEvent ( $Button2, "stop" ) GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents") ;typedef struct { ; WORD wFormatTag; ; WORD nChannels; ; DWORD nSamplesPerSec; ; DWORD nAvgBytesPerSec; ; WORD nBlockAlign; ; WORD wBitsPerSample; ; WORD cbSize; ;} WAVEFORMATEX; $wf = DllStructCreate("ushort wFormatTag;ushort nChannels;int nSamplesPerSec;dword nAvgBytesPerSec;ushort nBlockAlign;ushort wBitsPerSample;ushort cbSize") if @error Then MsgBox(0,"","Error in DllStructCreate " & @error); exit endif ;wf.wFormatTag = WAVE_FORMAT_PCM; ;wf.nChannels = 1; ;wf.nSamplesPerSec = 8000; ;wf.nAvgBytesPerSec = wf.nSamplesPerSec; ;wf.nBlockAlign = 1; ;wf.wBitsPerSample = 8; ;wf.cbSize = 0; DllStructSetData($wf,"wFormatTag",$WAVE_FORMAT_PCM) DllStructSetData($wf,"nChannels",1) DllStructSetData($wf,"nSamplesPerSec",8000) DllStructSetData($wf,"nAvgBytesperSec",DllStructGetData($wf,"nSamplesPerSec")) DllStructSetData($wf,"nBlockAlign",1) DllStructSetData($wf,"wBitsPerSample",8) DllStructSetData($wf,"cbSize",0) ;MMRESULT waveInOpen( ; LPHWAVEIN phwi, ; UINT_PTR uDeviceID, ; LPWAVEFORMATEX pwfx, ; DWORD_PTR dwCallback, ; DWORD_PTR dwCallbackInstance, ; DWORD fdwOpen ;); ;waveInOpen(&hWaveIn, WAVE_MAPPER, &wf, 0, 0, CALLBACK_NULL); $mmresult = DllCall("winmm.dll","int","waveInOpen","hwnd",$hwavein,"int",$WAVE_MAPPER,"ptr",DllStructGetPtr($wf),"int",0,"int",0,"int",$CALLBACK_NULL) msgbox(0,"waveInOpen mmresult",$mmresult[0]) ; 11 = MMSYSERR_INVALPARAM While 1 Sleep(100) WEnd Func start() ;nothing yet EndFunc Func stop() ;nothing yet EndFunc Func SpecialEvents() Exit EndFunc Edited February 8, 2008 by torun Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now