Code: Alles auswählen
Structure hMIXERLINE
cbStruct.l
dwDestination.l
dwSource.l
dwLineID.l;
fdwLine.l;
dwUser.l;
dwComponentType.l;
cChannels.l;
cConnections.l;
cControls.l;
szShortName.b[#MIXER_SHORT_NAME_CHARS]
szName.b[#MIXER_LONG_NAME_CHARS]
EndStructure
Structure helpMixerline Extends hMixerline
dwType.l
dwDeviceID.l
wMid.w
wPid.w
vDriverVersion.l
szPname.b[#MAXPNAMELEN]
EndStructure
Structure MIXERCONTROL
cbStruct.l
dwControlID.l
dwControlType.l
fdwControl.l
cMultipleItems.l
szShortName.b[#MIXER_SHORT_NAME_CHARS]
szName.b[#MIXER_LONG_NAME_CHARS]
lMinimum.l
lMaximum.l
dwMinimum.l
dwMaximum.l
Reserved.l[6]
cSteps.l
cbCustomData.l
dwReserved.l[6]
EndStructure
Structure MIXERCONTROLDETAILS_LISTTEXT
dwParam1.l
dwParam2.l
szName.b[#MIXER_LONG_NAME_CHARS]
EndStructure
Structure WAVEFORMATEX
wFormatTag.w
nChannels.w
nSamplesPerSec.l
nAvgBytesPerSec.l
nBlockAlign.w
wBitsPerSample.w
cbSize.w
EndStructure
Structure stats
nBuf.l
lBuf.l
wave.l
buffer.l
size.l
recorded.l
EndStructure
Procedure Verhaeltniss(a1$,b1$,a2$,b2$)
If a1$="x" Or a1$="X"
XVal=1
Else
a1=Val(a1$)
EndIf
If b1$="x" Or b1$="X"
XVal=2
Else
b1=Val(b1$)
EndIf
If a2$="x" Or a2$="X"
XVal=3
Else
a2=Val(a2$)
EndIf
If b2$="x" Or b2$="X"
XVal=4
Else
b2=Val(b2$)
EndIf
Select XVal
Case 1
;x:b1=a2:b2
;x*b2=b1*a2
result=(b1*a2)/b2
Case 2
;a1:x=a2:b2
;a1*b2=x*a2
result=(a1*b2)/a2
Case 3
;a1:b1=x:b2
;a1*b2=b1*x
result=(a1*b2)/b1
Case 4
;a1:b1=a2:x
;a1*x=b1*a2
result=(b1*a2)/a1
EndSelect
ProcedureReturn result
EndProcedure
Procedure ASL_MixerGetRecordChannel(mixerID,*ChannelNumber)
mxl.MIXERLINE
mxl\cbStruct=SizeOf(MIXERLINE)
mxl\dwComponentType=#MIXERLINE_COMPONENTTYPE_DST_WAVEIN
Result=mixerGetLineInfo_(mixerID,mxl,#MIXER_GETLINEINFOF_COMPONENTTYPE)
mxlctrls.MIXERLINECONTROLS
mxlctrls\cbStruct=SizeOf(MIXERLINECONTROLS)
mxlctrls\dwLineID=mxl\dwLineID
mxlctrls\cControls=mxl\cControls
mxlctrls\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mxlctrls\cbmxctrl=SizeOf(MIXERCONTROL)
Bytes=(SizeOf(MIXERCONTROL)*mxlctrls\cControls)
*control=AllocateMemory(Bytes)
mxlctrls\pamxctrl=*control
Result=mixerGetLineControls_(mixerID,mxlctrls,#MIXER_GETLINECONTROLSF_ONEBYTYPE)
CopyMemory(*Control,ctrl.Mixercontrol,SizeOf(Mixercontrol))
For i=0 To mxl\cControls-1
CopyMemory(*Control+(i*SizeOf(Mixercontrol)),ctrl.Mixercontrol,SizeOf(Mixercontrol))
Next
If ctrl\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mcd.MIXERCONTROLDETAILS
mcd\cbStruct = SizeOf(MIXERCONTROLDETAILS)
mcd\cChannels=1
PokeL(mcd+12,ctrl\cMultipleItems)
mcd\cbDetails = SizeOf(MIXERCONTROLDETAILS_BOOLEAN)
*lv=AllocateMemory(mcd\cChannels*ctrl\cMultipleItems*mcd\cbDetails)
mcd\paDetails=*lv
Result=mixerGetControlDetails_(mixerID,mcd,#MIXER_GETCONTROLDETAILSF_VALUE)
For i=0 To ctrl\cMultipleItems-1
If PeekL(*lv+i*4)=1
NumberSelect=i
EndIf
Next
NameSelect.s=s$
PokeL(*ChannelNumber,NumberSelect)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure ASL_MixerGetRecordChannels(mixerID,ChannelList.s())
mxl.MIXERLINE
mxl\cbStruct=SizeOf(MIXERLINE)
mxl\dwComponentType=#MIXERLINE_COMPONENTTYPE_DST_WAVEIN
Result=mixerGetLineInfo_(mixerID,mxl,#MIXER_GETLINEINFOF_COMPONENTTYPE)
mxlctrls.MIXERLINECONTROLS
mxlctrls\cbStruct=SizeOf(MIXERLINECONTROLS)
mxlctrls\dwLineID=mxl\dwLineID
mxlctrls\cControls=mxl\cControls
mxlctrls\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mxlctrls\cbmxctrl=SizeOf(MIXERCONTROL)
Bytes=(SizeOf(MIXERCONTROL)* mxlctrls\cControls)
*control=AllocateMemory(Bytes)
mxlctrls\pamxctrl=*control
Result=mixerGetLineControls_(mixerID,mxlctrls,#MIXER_GETLINECONTROLSF_ONEBYTYPE)
CopyMemory(*Control,ctrl.Mixercontrol,SizeOf(Mixercontrol))
For i=0 To mxl\cControls-1
CopyMemory(*Control+(i*SizeOf(Mixercontrol)),ctrl.Mixercontrol,SizeOf(Mixercontrol))
Next
If ctrl\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mcd.MIXERCONTROLDETAILS
mcd\cbStruct=SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID=ctrl\dwControlID
mcd\cChannels=1
PokeL(mcd+12,ctrl\cMultipleItems)
mcd\cbDetails=SizeOf(MIXERCONTROLDETAILS_LISTTEXT)
*fl=AllocateMemory(SizeOf(MIXERCONTROLDETAILS_LISTTEXT)*mcd\cChannels * ctrl\cMultipleItems * mcd\cbDetails)
mcd\paDetails=*fl
Result=mixerGetControlDetails_(mixerID,mcd,#MIXER_GETCONTROLDETAILSF_LISTTEXT)
*Text=AllocateMemory(#MIXER_LONG_NAME_CHARS)
For i=0 To ctrl\cMultipleItems-1
CopyMemory(*fl+(i*SizeOf(MIXERCONTROLDETAILS_LISTTEXT)+8),*Text,64)
s$=""
For y=0 To #MIXER_LONG_NAME_CHARS-1
s$=s$+Chr(PeekB(*Text+y))
Next
AddElement(ChannelList())
ChannelList()=s$
Next
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure ASL_MixerSetRecordChannel(mixerID,State)
mxl.MIXERLINE
mxl\cbStruct=SizeOf(MIXERLINE)
mxl\dwComponentType=#MIXERLINE_COMPONENTTYPE_DST_WAVEIN
Result=mixerGetLineInfo_(mixerID,mxl,#MIXER_GETLINEINFOF_COMPONENTTYPE)
mxlctrls.MIXERLINECONTROLS
mxlctrls\cbStruct=SizeOf(MIXERLINECONTROLS)
mxlctrls\dwLineID=mxl\dwLineID
mxlctrls\cControls=mxl\cControls
mxlctrls\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mxlctrls\cbmxctrl=SizeOf(MIXERCONTROL)
Bytes=(SizeOf(MIXERCONTROL)* mxlctrls\cControls)
*control=AllocateMemory(Bytes)
mxlctrls\pamxctrl=*control
Result=mixerGetLineControls_(mixerID,mxlctrls,#MIXER_GETLINECONTROLSF_ONEBYTYPE)
CopyMemory(*Control,ctrl.Mixercontrol,SizeOf(Mixercontrol))
For i=0 To mxl\cControls-1
CopyMemory(*Control+(i*SizeOf(Mixercontrol)),ctrl.Mixercontrol,SizeOf(Mixercontrol))
Next
If ctrl\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mcd.MIXERCONTROLDETAILS
mcd\cbStruct=SizeOf(MIXERCONTROLDETAILS)
mcd\cChannels=1
PokeL(mcd+12,ctrl\cMultipleItems)
mcd\cbDetails=SizeOf(MIXERCONTROLDETAILS_BOOLEAN)
*lv=AllocateMemory(mcd\cChannels*ctrl\cMultipleItems*mcd\cbDetails)
PokeL(*lv+State*4,1)
mcd\paDetails=*lv
Result=mixerSetControlDetails_(mixerID,mcd,#MIXER_SETCONTROLDETAILSF_VALUE)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure ASL_MixerGetRecordChannelNumber(mixerID,*Channels)
mxl.MIXERLINE
mxl\cbStruct=SizeOf(MIXERLINE)
mxl\dwComponentType=#MIXERLINE_COMPONENTTYPE_DST_WAVEIN
Result=mixerGetLineInfo_(mixerID,mxl,#MIXER_GETLINEINFOF_COMPONENTTYPE)
mxlctrls.MIXERLINECONTROLS
mxlctrls\cbStruct=SizeOf(MIXERLINECONTROLS)
mxlctrls\dwLineID=mxl\dwLineID
mxlctrls\cControls=mxl\cControls
mxlctrls\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mxlctrls\cbmxctrl=SizeOf(MIXERCONTROL)
Bytes=(SizeOf(MIXERCONTROL)* mxlctrls\cControls)
*control=AllocateMemory(Bytes)
mxlctrls\pamxctrl=*control
Result=mixerGetLineControls_(mixerID,mxlctrls,#MIXER_GETLINECONTROLSF_ONEBYTYPE)
CopyMemory(*Control,ctrl.Mixercontrol,SizeOf(Mixercontrol))
For i=0 To mxl\cControls-1
CopyMemory(*Control+(i*SizeOf(Mixercontrol)),ctrl.Mixercontrol,SizeOf(Mixercontrol))
Next
If ctrl\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
PokeL(*Channels,ctrl\cMultipleItems)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure$ _State_(*mxl.helpMIXERLINE,Type)
If Type=#MIXER_SHORT_NAME_CHARS
For i=0 To #MIXER_SHORT_NAME_CHARS-1
s$=s$+Chr(PeekB(@*mxl\szShortName[i]))
Next
EndIf
If Type=#MIXER_LONG_NAME_CHARS
For i=0 To #MIXER_LONG_NAME_CHARS-1
s$=s$+Chr(PeekB(@*mxl\szName[i]))
Next
EndIf
ProcedureReturn s$
EndProcedure
Procedure$ ASL_MixerGetRecordState(mixerID,Form)
mxl.MIXERLINE
mxl\cbStruct=SizeOf(MIXERLINE)
mxl\dwComponentType=#MIXERLINE_COMPONENTTYPE_DST_WAVEIN
mixerGetLineInfo_(mixerID,mxl,#MIXER_GETLINEINFOF_COMPONENTTYPE)
ProcedureReturn _State_(@mxl,Form)
EndProcedure
Procedure ASL_MixerGetRecordChannelName(mixerID,Channel,*ChannelName)
mxl.MIXERLINE
mxl\cbStruct=SizeOf(MIXERLINE)
mxl\dwComponentType=#MIXERLINE_COMPONENTTYPE_DST_WAVEIN
Result=mixerGetLineInfo_(mixerID,mxl,#MIXER_GETLINEINFOF_COMPONENTTYPE)
mxlctrls.MIXERLINECONTROLS
mxlctrls\cbStruct=SizeOf(MIXERLINECONTROLS)
mxlctrls\dwLineID=mxl\dwLineID
mxlctrls\cControls=mxl\cControls
mxlctrls\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mxlctrls\cbmxctrl=SizeOf(MIXERCONTROL)
Bytes=(SizeOf(MIXERCONTROL)* mxlctrls\cControls)
*control=AllocateMemory(Bytes)
mxlctrls\pamxctrl=*control
Result=mixerGetLineControls_(mixerID,mxlctrls,#MIXER_GETLINECONTROLSF_ONEBYTYPE)
CopyMemory(*Control,ctrl.Mixercontrol,SizeOf(Mixercontrol))
For i=0 To mxl\cControls-1
CopyMemory(*Control+(i*SizeOf(Mixercontrol)),ctrl.Mixercontrol,SizeOf(Mixercontrol))
Next
If ctrl\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mcd.MIXERCONTROLDETAILS
mcd\cbStruct=SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID=ctrl\dwControlID
mcd\cChannels=1
PokeL(mcd+12,ctrl\cMultipleItems)
mcd\cbDetails=SizeOf(MIXERCONTROLDETAILS_LISTTEXT)
*fl=AllocateMemory(SizeOf(MIXERCONTROLDETAILS_LISTTEXT)*mcd\cChannels * ctrl\cMultipleItems * mcd\cbDetails)
mcd\paDetails=*fl
Result=mixerGetControlDetails_(mixerID,mcd,#MIXER_GETCONTROLDETAILSF_LISTTEXT)
i=Channel
*Text=AllocateMemory(#MIXER_LONG_NAME_CHARS)
CopyMemory(*fl+(i*SizeOf(MIXERCONTROLDETAILS_LISTTEXT)+8),*Text,64)
For y=0 To #MIXER_LONG_NAME_CHARS-1
s$=s$+Chr(PeekB(*Text+y))
Next
PokeS(*ChannelName,s$)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure ASL_MixerSetRecordChannelName(mixerID,Channel$)
mxl.MIXERLINE
mxl\cbStruct=SizeOf(MIXERLINE)
mxl\dwComponentType=#MIXERLINE_COMPONENTTYPE_DST_WAVEIN
Result=mixerGetLineInfo_(mixerID,mxl,#MIXER_GETLINEINFOF_COMPONENTTYPE)
mxlctrls.MIXERLINECONTROLS
mxlctrls\cbStruct=SizeOf(MIXERLINECONTROLS)
mxlctrls\dwLineID=mxl\dwLineID
mxlctrls\cControls=mxl\cControls
mxlctrls\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mxlctrls\cbmxctrl=SizeOf(MIXERCONTROL)
Bytes=(SizeOf(MIXERCONTROL)* mxlctrls\cControls)
*control=AllocateMemory(Bytes)
mxlctrls\pamxctrl=*control
Result=mixerGetLineControls_(mixerID,mxlctrls,#MIXER_GETLINECONTROLSF_ONEBYTYPE)
CopyMemory(*Control,ctrl.Mixercontrol,SizeOf(Mixercontrol))
For i=0 To mxl\cControls-1
CopyMemory(*Control+(i*SizeOf(Mixercontrol)),ctrl.Mixercontrol,SizeOf(Mixercontrol))
Next
If ctrl\dwControlType=#MIXERCONTROL_CONTROLTYPE_MUX
mcd.MIXERCONTROLDETAILS
mcd\cbStruct=SizeOf(MIXERCONTROLDETAILS)
mcd\dwControlID=ctrl\dwControlID
mcd\cChannels=1
PokeL(mcd+12,ctrl\cMultipleItems)
mcd\cbDetails=SizeOf(MIXERCONTROLDETAILS_LISTTEXT)
*fl=AllocateMemory(SizeOf(MIXERCONTROLDETAILS_LISTTEXT)*mcd\cChannels * ctrl\cMultipleItems * mcd\cbDetails)
mcd\paDetails=*fl
Result=mixerGetControlDetails_(mixerID,mcd,#MIXER_GETCONTROLDETAILSF_LISTTEXT)
*Text=AllocateMemory(#MIXER_LONG_NAME_CHARS)
For i=0 To ctrl\cMultipleItems-1
CopyMemory(*fl+(i*SizeOf(MIXERCONTROLDETAILS_LISTTEXT)+8),*Text,64)
s$=""
For y=0 To #MIXER_LONG_NAME_CHARS-1
s$=s$+Chr(PeekB(*Text+y))
Next
If s$=Channel$
Found=1
State=i
EndIf
Next
If Found
mcd.MIXERCONTROLDETAILS
mcd\cbStruct=SizeOf(MIXERCONTROLDETAILS)
mcd\cChannels=1
PokeL(mcd+12,ctrl\cMultipleItems)
mcd\cbDetails=SizeOf(MIXERCONTROLDETAILS_BOOLEAN)
*lv=AllocateMemory(mcd\cChannels*ctrl\cMultipleItems*mcd\cbDetails)
PokeL(*lv+State*4,1)
mcd\paDetails=*lv
Result=mixerSetControlDetails_(mixerID,mcd,#MIXER_SETCONTROLDETAILSF_VALUE)
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndIf
ProcedureReturn #False
EndProcedure
Procedure StartRecord_(hWnd,nBuf,lBuf,nDev,nChannels,wBitsPerSample,nSamplesPerSec,cbSize,wFormatTag)
Global Record.stats
Global format.WAVEFORMATEX
Global Dim inHdr.WAVEHDR(16)
format\nChannels=nChannels
format\wBitsPerSample=wBitsPerSample
format\nSamplesPerSec=nSamplesPerSec
format\wFormatTag=wFormatTag
format\cbSize=cbSize
format\nBlockAlign=(format\nChannels*format\wBitsPerSample)/8
format\nAvgBytesPerSec=format\nSamplesPerSec*format\nBlockAlign
Record\nBuf=nBuf
Record\lBuf=lBuf
If #MMSYSERR_NOERROR=waveInOpen_(@Record\wave,#WAVE_MAPPER+nDev,@format,hWnd,#Null,#CALLBACK_WINDOW|#WAVE_FORMAT_DIRECT)
For i=0 To Record\nBuf-1
inHdr(i)\lpData=AllocateMemory(Record\lBuf)
inHdr(i)\dwBufferLength=Record\lBuf
waveInPrepareHeader_(Record\wave,inHdr(i),SizeOf(WAVEHDR))
waveInAddBuffer_(Record\wave,inHdr(i),SizeOf(WAVEHDR))
Next
waveInStart_(Record\wave)
EndIf
ProcedureReturn Record\wave
EndProcedure
Procedure Record_(wParam,lParam,*buffer.long,*size.long)
waveInAddBuffer_(wParam,lParam,SizeOf(WAVEHDR))
*hWave_Record.WAVEHDR=lParam
Record\buffer=*hWave_Record\lpData
Record\size=*hWave_Record\dwBytesRecorded
Record\recorded+Record\size
*buffer\l=Record\buffer
*size\l=Record\size
ProcedureReturn Record\recorded
EndProcedure
Procedure StopRecord_()
waveInReset_(Record\wave)
waveInStop_(Record\wave)
For i=0 To Record\nBuf-1
If inHdr(i)
waveInUnprepareHeader_(Record\wave,inHdr(i),SizeOf(WAVEHDR))
EndIf
Next
waveInClose_(Record\wave)
EndProcedure
Procedure raw2wav(WaveFile$,RawFile$)
FileIn=ReadFile(#PB_Any,RawFile$)
If FileIn=#Null
ProcedureReturn #False
EndIf
lBuf=Lof(FileIn)
pBuf=AllocateMemory(lBuf)
ReadData(FileIn,pBuf,lBuf)
CloseFile(FileIn)
FileOut=CreateFile(#PB_Any,WaveFile$)
If FileOut=#Null
ProcedureReturn #False
EndIf
b.w=format\wBitsPerSample
c.w=format\nChannels
h=format\nSamplesPerSec
WriteByte(FileOut,Asc("R"))
WriteByte(FileOut,Asc("I"))
WriteByte(FileOut,Asc("F"))
WriteByte(FileOut,Asc("F"))
WriteLong(FileOut,lBuf+44)
WriteByte(FileOut,Asc("W"))
WriteByte(FileOut,Asc("A"))
WriteByte(FileOut,Asc("V"))
WriteByte(FileOut,Asc("E"))
WriteByte(FileOut,Asc("f"))
WriteByte(FileOut,Asc("m"))
WriteByte(FileOut,Asc("t"))
WriteByte(FileOut,Asc(" "))
WriteLong(FileOut,16)
WriteWord(FileOut,1)
WriteWord(FileOut,c)
WriteLong(FileOut,h)
WriteLong(FileOut,c*b/8*h)
WriteWord(FileOut,b/8*c)
WriteWord(FileOut,b)
WriteByte(FileOut,Asc("d"))
WriteByte(FileOut,Asc("a"))
WriteByte(FileOut,Asc("t"))
WriteByte(FileOut,Asc("a"))
WriteLong(FileOut,lBuf)
WriteData(FileOut,pBuf,lBuf)
CloseFile(FileOut)
ProcedureReturn #True
EndProcedure
Procedure raw2img(BMPFile$,RawFile$)
FileIn=ReadFile(#PB_Any,RawFile$)
If FileIn=#Null
ProcedureReturn #False
EndIf
lBuf=Lof(FileIn)
pBuf=AllocateMemory(lBuf)
ReadData(FileIn,pBuf,lBuf)
CloseFile(FileIn)
For k=0 To lBuf Step 2
Word.w=PeekW(pBuf+k)/-180
If Word>HWord.w
HWord=Word
EndIf
If Word<LWord.w
LWord=Word
EndIf
Next
Width=lBuf/2/2/180
Height=HWord-LWord
add=-LWord
ImgOut=CreateImage(#PB_Any,Width,Height)
StartDrawing(ImageOutput(ImgOut))
Line(0,Height/2,Width,0,RGB(255,0,0))
For k=0 To lBuf Step 2
X=Verhaeltniss("x",Str(lBuf/2/2/180),Str(k),Str(lBuf))-1
Word.w=PeekW(pBuf+k)
Y=Word/-180+add
If X<>XF
If Draw=1
LineXY(X,Y,XFF,YF,RGB(0,255,0))
EndIf
Draw=1
XFF=X
YF=Y
EndIf
XF=X
Next
StopDrawing()
SaveImage(ImgOut,BMPFile$)
EndProcedure
Procedure WindowCallback(hWnd,Msg,wParam,lParam)
Select Msg
Case #MM_WIM_DATA
Record_(wParam,lParam,@buffer,@size)
WriteData(0,buffer,size)
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Win=OpenWindow(0,0,0,200,200,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
hWnd=WindowID(0)
ASL_MixerSetRecordChannel(0,0)
StartRecord_(hWnd,8,512,0,2,16,48000,0,#WAVE_FORMAT_PCM)
CreateFile(0,"C:\RawWave.raw")
SetWindowCallback(@WindowCallback())
StartTime=ElapsedMilliseconds()
Repeat
Event=WindowEvent()
If Event=#WM_CLOSE
Quit=1
EndIf
YetTime=ElapsedMilliseconds()
Until Quit=1 Or GetAsyncKeyState_(#VK_RETURN); Or YetTime-StartTime>=1000
StopRecord_()
CloseFile(0)
raw2wav("C:\WaveTest.wav","C:\RawWave.raw")
raw2img("C:\AktionIMG.bmp","C:\RawWave.raw")
DeleteFile("C:\RawWave.raw")
Ihr solltet ein mikro anschließen und abwechselnt etwas machen (zB. reden nicht reden
). Auf keinen Fall zu lange aufnehmen:
Dann seht unter C:\ (in diesem Fall) das bmp an das erstellt wurde.