Jump to content
Sign in to follow this  
derda

Waveoutfunktions....

Recommended Posts

derda

hi :)

I tried to figure out how to control the Waveoutport.

This happens with the WinApi(winmm.dll) but i'm getting desperately with it ^_^

all i could code in two weeks was this lousy bit of code:( :

;works:
Func waveOutGetNumDevs($dll="winmm.dll")
    $ret = DllCall($dll,"int","waveOutGetNumDevs")
    If IsArray($ret) Then
        Return $ret[0]
    Else
        Return -1
    EndIf
EndFunc
;may works:
Func waveOutClose($hno,$dll="winmm.dll")
    $ret = DllCall($dll,"int","waveOutClose","int",$hno)
    If IsArray($ret) Then
        Return 1
    Else
        Return -1
    EndIf
EndFunc
;don't works:
Func WAVEOUTCAPS($dll="winmm.dll")
    $stc = "int wMid;int wPid;long vDriverVersion;char szPname[255];long dwFormats;int wChannels;long dwSupport;"
    $struct = DllStructCreate($stc)
    $ret = DllCall($dll,"none","WAVEOUTCAPS","ptr",DllStructGetPtr($struct,1),"ptr",DllStructGetPtr($struct,2),"ptr",DllStructGetPtr($struct,3),"ptr",DllStructGetPtr($struct,4),"ptr",DllStructGetPtr($struct,5),"ptr",DllStructGetPtr($struct,6),"ptr",DllStructGetPtr($struct,7))
EndFunc

my biggest Problem is i don't know how to create buffers or special structures like WAVEOUTCAPS

has anybody a good link on how to create structures?

grez

derda

P.S: sorry for my bad English :/

Share this post


Link to post
Share on other sites
weaponx

First off, why did you quote yourself? Second, you didn't give a description of what this script is for. Third you didn't tell us what the problem is.

Share this post


Link to post
Share on other sites
derda

hi

sorry about that :/ i wanted to edit something but haven't found the edit-button...so i tried every button i saw... and hit the apply-button by mistake...

i need this script for creating a pwm i need in school.... the problem is i don't really know how to create a structure i need for eg WAVEOUTCAPS

there are so many data types on msdn and i don't know witch one of autoit fits to them...(i hope you understand this sentence :/)

the function, i posted before, checks how many waveoutports are available. The second function closes an previously opened Waveoutdevice and the third fills in some information in a WAVEOUTCAPS-structure.

Share this post


Link to post
Share on other sites
derda

wow thats great :)

but this isnt exactly the thing i need... he displayed the wavein... i wan't to control the waveout ^_^ but i think i can learn much from his code :)

grez

derda

edit:

hi

anyone a guess why this don't works?

Func WAVEOUTCAPS($dll="winmm.dll")
    $stc = "int wMid;int wPid;long vDriverVersion;char szPname[5000];long dwFormats;int wChannels;long dwSupport;"
    $struct = DllStructCreate($stc)
    Return $struct
EndFunc
Func waveOutGetDevCaps($struct,$id=1,$dll="winmm.dll")
    $ret = DllCall($dll,"none","waveOutGetDevCaps","ptr",DllStructGetPtr($struct),"byte",DllStructGetSize($struct))
    MsgBox(0,"",DllStructGetData($struct,"wMid")&@CRLF&DllStructGetData($struct,"wPid")&@CRLF&DllStructGetData($struct,"vDriverVersion")&@CRLF&DllStructGetData($struct,"szPname")&@CRLF&DllStructGetData($struct,"dwFormats")&@CRLF&DllStructGetData($struct,"wChannels")&@CRLF&DllStructGetData($struct,"dwSupport"))
EndFunc

waveOutGetDevCaps(WAVEOUTCAPS())

is it possible to use all dataformats on msdn in dllstructs? for example tchar...

grez

derda

edit2:

i thing szPname is the problem... it has to have the length of "MAXPNAMELEN" but i don't have a glue how i could get this in autoit ;)

none got a glue?

Edited by derda

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×