a voice recorder for Pocket PC (need help debugging)

M

Mad Scientist Jr

I'm trying to record a voice memo on a Pocket PC (2000) from VB.NET
(smart device application from vs.net 2003).

Tom Shelton did an initial conversion to VB.NET which I am trying to
run, but am getting errors I don't quite understand (I've never done
anything like this before)...

Any help would be appreciated in getting this to work...

'-----------------------------------------------------------------------------
'ported to vb.net by
'Tom Shelton ([email protected])
'Off the top of my head... I'm not sure why the original code is
using
'unsafe code. There doesn't seem to be anything used that would
require that
'- but, I don't know much about the Pocket PC environment. If the
unsafe is
'required for some reason on PPC, then you have to use C#.
'-----------------------------------------------------------------------------

Imports System
Imports System.Data
Imports System.Runtime.InteropServices

Public Class VoiceRecorder
<StructLayout(LayoutKind.Sequential)> _
Protected Structure CM_VOICE_RECORDER
Public cb As Integer
Public dwStyle As Integer
Public xPos As Integer
Public yPos As Integer
Public hwndParent As IntPtr
Public id As Integer
Public lpszRecordFileName As String
End Structure

'errors on next line:
'CallingConvention is a type and cannot be used as an expression
'Cdecl is not a member of
'System.Runtime.InteropServices.CallingConvention'
<DllImport("voicectl.dll", CallingConvention =
CallingConvention.Cdecl)> _
Private Shared Function VoiceRecorder_Create _
(ByRef CM_VOICE_RECORDER As VoiceRecorder) As IntPtr
End Function

Private voicerec As CM_VOICE_RECORDER
Private handle As IntPtr

Public Sub New()
With voicerec
.cb = Marshal.SizeOf(voicerec);
.lpszRecordFileName = "\My Documents\VoiceControl.wav"
.xPos = -1
.yPos = -1
End With
End Sub

Public Sub Show()
'error on next line:
'VoiceRecorder is a type and cannot be used as an expression.
handle = VoiceRecorder_Create(VoiceRecorder)
End Sub

End Class


'-----------------------------------------------------------------------------
original c# code:
source: wapboy
http://www.opennetcf.org/forums/topic.asp?TOPIC_ID=62
'-----------------------------------------------------------------------------

//Q: Once we have a voice recorder object, how do you then pass
messages to it??

//A: Im working on that... Essentially the sendmessage api function
will need to
//be p/invoked. The voicerecordercreate function has returned the
hwnd so
//messages can be sent to this. The voice recorder messages are
documented in
//the sdk
//I haven't had much luck with the sendmessage function - everytime I
try to
//send a message to the voicerecorder, it just closes the
voicerecorder.....
//
//I got this code to run. This code seems to record to files in \\My
//Documents\~VRec_* where * is a number.
//Alan, did you install the Speech.NET or Speech API?
//
//The files ~VRec_* are temporary files that the voice recorder uses
to store
//the data while it is recording. Sometimes, depending on how the
recorder is
//terminated, they get converted to recording*.wav
//
//Take a look here:
//http://www.innovativedss.com/forums/topic.asp?TOPIC_ID=80
//for an example of playing .WAV sounds.
//


using System;
using System.Data;
using System.Runtime.InteropServices;

/// <summary>
/// Creates an instance of the shell voice recorder
/// </summary>
public class VoiceRecorder
{
//API Declares

[StructLayout(LayoutKind.Sequential)]
protected unsafe struct CM_VOICE_RECORDER
{
public int cb;
public uint dwStyle;
public int xPos, yPos;
public IntPtr hwndParent;
public int id;
public String lpszRecordFileName;
};

[DllImport("voicectl.dll", CallingConvention=CallingConvention.Cdecl)]
private static extern IntPtr VoiceRecorder_Create(ref
CM_VOICE_RECORDER
voicerec);

//end api delcare

private CM_VOICE_RECORDER voicerec;
private IntPtr handle;

public unsafe VoiceRecorder()
{
voicerec = new CM_VOICE_RECORDER();
handle = new IntPtr();
voicerec.cb = (int)Marshal.SizeOf(voicerec);
voicerec.lpszRecordFileName = "\\My Documents\\VoiceControl.wav";

voicerec.xPos = -1;
voicerec.yPos = -1;
}
//show the voice recorder
public void Show()
{
handle = VoiceRecorder_Create(ref voicerec);
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top