copyright 1999 - 2014 by heinz prelle - hannover  - lenbachstraße 42 - www.visual-basic5.de | impressum
Beispiel: VB .Net - Wav über Mikrofon aufzeichnen
'
Option Explicit On
Option Strict On

Imports System.Reflection
Imports System.IO

Public Class Form1

    Private rwf As RecordWaveFile

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles Button1.Click
        Dim di As DirectoryInfo = New DirectoryInfo(Me.TextBox1.Text)
        If Not di.Exists Then
            MessageBox.Show("Das angegebene Verzeichnis wurde nicht gefunden.", _
                "Info - " & _
                MethodBase.GetCurrentMethod().Name())
            Return
        Else
            Me.PictureBox1.Visible = True
            rwf = New RecordWaveFile(Me.TextBox1.Text & Me.TextBox2.Text)
            Dim Result As Boolean = rwf.Record()
            If Result Then
                Button2.Enabled = True
            End If
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles Button2.Click

        Dim Result As Boolean = rwf.Save()
        If Result Then Me.PictureBox1.Visible = False
    End Sub

    Public Class RecordWaveFile

#Region "Private"

        Private _filename As String
        Private _alias As String

#End Region

#Region "Constructor"

        Public Sub New(ByVal Filename As String)
            Me._filename = Filename
            Me._alias = "WaveFile"
        End Sub

#End Region

#Region "Win32Api"

        Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" ( _
            ByVal lpstrCommand As String, _
            ByVal lpstrReturnString As String, _
            ByVal uReturnLength As Integer, _
            ByVal hwndCallback As IntPtr) _
            As Int32

#End Region

#Region "Record"

        Public Function Record() As Boolean
            Dim query As String = "Open New Type WaveAudio alias " & Me._alias
            Dim Result As Int32 = mciSendString( _
                query, Nothing, 0, IntPtr.Zero _
                )
            If Result = 0 Then
                query = "Record " & Me._alias
                Result = mciSendString( _
                    query, Nothing, 0, IntPtr.Zero _
                    )
                Return True
            End If
            Return False
        End Function

        Public Function Save() As Boolean
            MessageBox.Show("Datei wird gespeichert unter:" & _
                System.Environment.NewLine & _
                Me._filename, "Info - " & _
                MethodBase.GetCurrentMethod().Name() _
                )

            Dim query As String = "Stop " & Me._alias
            Dim Result As Int32 = mciSendString( _
                query, Nothing, 0, IntPtr.Zero _
                )

            If Result = 0 Then
                query = "Save " & Me._alias & " " & _
                    Convert.ToChar(CByte(34)) & _
                    Me._filename & _
                    Convert.ToChar(CByte(34))
                Result = mciSendString( _
                    query, Nothing, 0, IntPtr.Zero _
                    )
                If Result = 0 Then
                    query = "Close " & Me._alias
                    Result = mciSendString( _
                        query, Nothing, 0, IntPtr.Zero _
                        )
                    If File.Exists(Me._filename) Then
                        Return True
                    Else
                        Return False
                    End If
                End If
            End If
            Return False
        End Function

#End Region

    End Class

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
            Handles MyBase.Load
        Button2.Enabled = False
        Me.TextBox1.Text = "c:\Alter Computer\" : Me.TextBox2.Text = "_test.wav"
        Me.PictureBox1.Visible = False
    End Sub

End Class
Sourcecode Visual Basic