"Bjarke Walling Petersen" <bwp@bwp.dk> skrev i en meddelelse
news:9eilol$12as$1@news.cybercity.dk...
> Allan R. <warlock@ostenfeld.dk> skrev i en
> news:9ei6vd$ceo$1@eising.k-net.dk...
> > Martin: Hvor i "egenskaber"?? Man kan konvertere...men ikke noget
> > relevant...
> > Så problemet er da ikke løst?!?
Nu er det løst (vil jeg mene) ... jeg fandt noget kode, der kan gøre det:
http://www.vbsquare.com/tips/tip451.html
Jeg har selv lavet det en del bedre (så det f.eks. også kan gemme i .wav).
Prøv at oprette en form og sæt 4 knapper samt en timer ind på den. Skriv
følgende kode (eller kopier det ind):
Private Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long
Private Declare Function mciGetErrorString Lib "winmm.dll" _
Alias "mciGetErrorStringA" _
(ByVal dwError As Long, _
ByVal lpstrBuffer As String, _
ByVal uLength As Long) As Long
Const navn = "lydoptagelse"
Dim starttid As Single
Dim tid As String
Dim gemt As Boolean
Private Sub Command1_Click()
If gemt = False Then
If vbYes <> MsgBox("Du har ikke gemt optagelsen. Vil du optage en ny
alligevel?", _
vbYesNo + vbQuestion, "Lydoptager") Then Exit Sub
End If
gemt = False
Command1.Enabled = False
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = False
starttid = Timer
Timer1.Enabled = True
CloseSound
DoMciCall "open new type waveaudio alias " & navn
DoMciCall "set " & navn & " time format ms bitspersample 8 samplespersec
11025"
DoMciCall "record " & navn
End Sub
Private Sub Command2_Click()
Dim sluttid As Single
Command1.Enabled = True
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = True
Timer1.Enabled = False
DoMciCall "stop " & navn
sluttid = Timer - starttid
tid = "(" & CStr(Int(sluttid * 100) / 100) & "sek)"
Me.Caption = "> Stoppet " & tid
Command3.SetFocus
End Sub
Private Sub Command3_Click()
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Me.Caption = "> Afspiller " & tid
DoMciCall "stop " & navn
DoMciCall "play " & navn & " from 1 wait"
Me.Caption = "> Stoppet " & tid
Command1.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command3.SetFocus
End Sub
Private Sub Command4_Click()
On Error GoTo fejl
Dim filnavn As String
igen:
filnavn = InputBox("Skriv filnavnet:", "Gem som...", _
"C:\Windows\Skrivebord\Lydoptagelse.wav")
If filnavn = "" Then Exit Sub
Open filnavn For Output As #1
Print #1, ""
Close #1
DoMciCall "save " & navn & " " & filnavn
GoTo slut
fejl:
If Err = 76 Then
MsgBox "Ugyldigt filnavn!", vbOKOnly + vbCritical, "Lydoptager -
Fejl"
Resume igen
Else
Error Err
End If
slut:
gemt = True
End Sub
Private Sub Form_Load()
gemt = True
Timer1.Enabled = False
Timer1.Interval = 100
Command1.Caption = "Optag"
Command1.Enabled = True
Command2.Caption = "Stop"
Command2.Enabled = False
Command3.Caption = "Afspil"
Command3.Enabled = False
Command4.Caption = "Gem som"
Command4.Enabled = False
Me.Caption = "Lydoptager"
' Kun for udseendets skyld:
Command1.Width = 900
Command1.Height = 360
Command1.Left = 120
Command1.Top = 120
Command2.Width = 900
Command2.Height = 360
Command2.Left = 1140
Command2.Top = 120
Command3.Width = 900
Command3.Height = 360
Command3.Left = 2160
Command3.Top = 120
Command4.Width = 900
Command4.Height = 360
Command4.Left = 3180
Command4.Top = 120
Me.Width = 4320
Me.Height = 990
End Sub
Private Sub DoMciCall(ByRef SendString As String)
Dim Res As Long
Dim ResX As Integer
Dim ReturnString As String * 1024
Dim ErrorString As String * 1024
Res = mciSendString(SendString, ReturnString, 1024, 0)
If Res <> 0 Then
ResX = mciGetErrorString(Res, ErrorString, 1024)
MsgBox ErrorString & vbCrLf & vbCrLf _
& "Programmet afsluttes.", vbOKOnly + vbCritical, "Lydoptager -
Fejl"
End
End If
SendString = ReturnString
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If gemt = False Then
If vbYes = MsgBox("Optagelsen er ikke gemt. Vil du gemme den nu?", _
vbYesNo + vbQuestion, "Lydoptager") Then
Command4_Click
End If
End If
CloseSound
End Sub
Private Sub Timer1_Timer()
Me.Caption = "> Optager (" & CStr(Int((Timer - starttid) * 100) / 100) &
"sek)"
End Sub
Private Sub CloseSound()
Dim Res As Long
Dim ReturnString As String * 1024
Res = mciSendString("close " & navn, ReturnString, 1024, 0)
End Sub
> Nej... Jeg fandt ud af at ved at konvertere til forskellige formater, fik
> man lov
> til at optage i 47,5 sekund i stedet for 60 sekunder, hvilket ikke var så
> sjovt...
>
> > og Bjark: vil du ikke sige til når du har fundet ud af det?
>
> Det skal jeg nok...
Her er det!
> - Bjarke Walling Petersen
>
> > "Martin - Zeus" <martin.molle@get2net.dk> skrev i en meddelelse
> > news:4dTO6.341$W45.11425@news.get2net.dk...
> > > Prøv at gå ind i Indstillinger eller egenskaber osv..
> > > Jeg har også selv engang skulle bruge mere en 60 sek. Hvor jeg gik ind
> og
> > > pillede i egenskaber eller noget lign... Jeg kan ikke huske hvordan,
men
> > det
> > > kan lade sig gøre
> > > "Bjarke Walling Petersen" <bwp@bwp.dk> skrev i en meddelelse
> > > news:9eg6q7$11lg$1@news.cybercity.dk...
> > > > Jeg skal bruge et lille program hvis eneste formål er at optage lyd
og
> > > gemme
> > > > det som en .wav-fil... hvorfor så ikke bruge Lydoptager i Tilbehør,
> vil
> > > > nogen sige... men det går ikke. For den stopper nemlig med at optage
> > efter
> > > > 60 sekunder og det må den ikke. Allerhelst skal programmet gemme
lyden
> > > > direkte på harddisken, mens der optages, så computerens hukommelse
> ikke
> > > > betyder noget for i hvor lang tid den kan optage.
> > > > Derfor tænkte jeg om man ikke kunne lave den selv i VB, men jeg
synes
> > ikke
> > > > rigtig jeg har den fornødne ekspertise lige på det område...
> > > >
> > > > Er der nogen der kan hjælpe?
> > > >
> > > > - Bjarke Walling Petersen
> >
> >
>
>
>
>