Hi Folks,
I was hoping to get a little help here. I have recently foun the following code (here: http://www.opennetcf.o rg/forums/topic.asp?TOPIC _ID=160)
which is for creating a voice/audio recorder on a WM5 PDA. I have included the code into my project in a VoiceRecorder.c s class, and have invoked it from the main code (i.e. VoiceRecorder vr = new VoiceRecorder() ; vr.show() ) and the voice recorder app appears on screen, and beeps when I hit record, but there doesnt seem to be any file being created, nor is there any functions for playback. I was wondering if anyone could help me out here, as I really want to include this in my application. If anyone has any other ideas on a good way to include a voice recording feature from c# code I would greatly appreciate it!
Cheers folks,
Mark
I was hoping to get a little help here. I have recently foun the following code (here: http://www.opennetcf.o rg/forums/topic.asp?TOPIC _ID=160)
Code:
public class VoiceRecorder { #region API prototypes [DllImport("voicectl.dll", EntryPoint = "VoiceRecorder_Create")] private unsafe static extern IntPtr VoiceRecorder_Create(CM_VOICE_RECORDER* voicerec); [DllImport("coredll.dll", EntryPoint = "GetForegroundWindow")] private unsafe static extern IntPtr GetForegroundWindow(); #endregion [StructLayout(LayoutKind.Sequential)] public unsafe struct CM_VOICE_RECORDER { public int cb; public wndStyle dwStyle; public int xPos; public int yPos; public IntPtr hwndParent; public int id; public char* lpszRecordFileName; } public enum wndStyle : uint { VRS_NO_OKCANCEL = 0x0001, // No OK/CANCLE displayed VRS_NO_NOTIFY = 0x0002, // No parent Notifcation VRS_MODAL = 0x0004, // Control is Modal VRS_NO_OK = 0x0008, // No OK displayed VRS_NO_RECORD = 0x0010, // No RECORD button displayed VRS_PLAY_MODE = 0x0020, // Immediately play supplied file when launched VRS_NO_MOVE = 0x0040, // Grip is removed and cannot be moved around by the user VRS_RECORD_MODE = 0x0080, // Immediately record when launched VRS_STOP_DISMISS = 0x0100 // Dismiss control when stopped } private unsafe CM_VOICE_RECORDER _VoiceRec; private IntPtr _hRecorder; private string wavFile = @"\My Documents\~VRec_0.wav"; private IntPtr _Hwnd = (IntPtr)0; public IntPtr Hwnd { get { return _Hwnd; } set { _VoiceRec.hwndParent = value; _Hwnd = value; } } public unsafe VoiceRecorder() { _hRecorder = new IntPtr(); char[] temp = new char[32]; this.Hwnd = GetForegroundWindow(); // Populate temp with the file path of the WAV file Buffer.BlockCopy(wavFile.ToCharArray(), 0, temp, 0, 2 * wavFile.Length); fixed (char* lpszFileName = temp) { _VoiceRec = new CM_VOICE_RECORDER(); _VoiceRec.hwndParent = _Hwnd; _VoiceRec.dwStyle = wndStyle.VRS_NO_MOVE | wndStyle.VRS_MODAL; _VoiceRec.cb = (int)Marshal.SizeOf(_VoiceRec); _VoiceRec.xPos = -1; _VoiceRec.yPos = -1; _VoiceRec.lpszRecordFileName = lpszFileName; } } // Show the voice recorder public unsafe void Show() { fixed (CM_VOICE_RECORDER* _VoiceRecPtr = &_VoiceRec) { _hRecorder = VoiceRecorder_Create(_VoiceRecPtr); } } } }
Cheers folks,
Mark
Comment