Stopky jako vlákno – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Stopky jako vlákno – .NET – Fórum – Programujte.comStopky jako vlákno – .NET – Fórum – Programujte.com

 

Jirka
~ Anonymní uživatel
305 příspěvků
21. 4. 2011   #1
-
0
-

Zdravím! Mám problém už druhý den bojuju s tím, že se do svého programu snažím dostat stopky nahrávání. Prej nejjednoduší to bude pomocí vlákna, ale tady jsem skončil. Nevíte někdo jak založit to vlákno a dál postupovat? Budu vděčný za jakoukoli radu.

Můj kód:

using System;

using System.IO;
using System.Reflection;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic.Devices;
using Microsoft.VisualBasic;
using System.Runtime.InteropServices;



namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
//pro nahravani
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
//pro prehravac
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

public Form1()
{
InitializeComponent();
button4.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;

//kontrola souboru LAME.EXE na C:\
FileInfo soubor = new FileInfo(Path.Combine(Environment.CurrentDirectory, "c:\\lame.exe"));
if (!soubor.Exists) //kdyz soubor lame.exe neexistuje zabraz zpravu
{
MessageBox.Show("Pro správnou funkci programu, prosím nakopírujte soubor \"LAME.EXE\" do kořenového adresáře C:\\ \n\nProgram se nyní ukončí."); //kontrola souboru LAME.EXE na disku C:\
System.Environment.Exit(0); //pokud se soubor LAME.EXE nenajde na disku, program se ukončí "killnutí procesu"
}
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//nahrávání do wav
private void button1_Click(object sender, EventArgs e) //aktivace nahrávání z mikrofonu
{
mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);
button2.Enabled = true;
}

private void button2_Click(object sender, EventArgs e) //zastaveni nahravani a ulozeni zalozniho souboru nahravka.wav
{
mciSendString("save recsound c:\\nahravka.wav", "", 0, 0); //ulozeni nahravka.wav
mciSendString("close recsound ", "", 0, 0); //ukonceni souboru nahravka.wav
Computer c = new Computer();
c.Audio.Stop();
button3.Enabled = true;
button4.Enabled = true;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//dekódování z wav do mp3

private void button3_Click(object sender, EventArgs e)
{
SetOutputFileName(); //načtení složky, kam se ulozi vystupni soubor
}

private void SetOutputFileName()
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string newFileName = System.IO.Path.GetFileNameWithoutExtension("c:\\nahravka.wav");
textBox1.Text = folderBrowserDialog1.SelectedPath + string.Format(@"\{0}.mp3", newFileName); //za {0} můžu napsat jakýkoli název, který má obsahovat výstupní soubor
}
}

private void button4_Click(object sender, EventArgs e)
{
ConvertWavToMp3(); //aktivace konvertoru
MessageBox.Show("Nahrávka byla vytvořena"); //vyskoceni hlasky "Nahravka byla vytvorena"
System.IO.File.Delete(@"c:\\nahravka.wav"); //Po uložení souboru smažeme soubor "c:\nahravka.wav"
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
}
private void ConvertWavToMp3()
{
string outfile = "-b 32 --resample 22.05 -m m \"" + "c:\\nahravka.wav" + "\" \"" + textBox1.Text.Replace(".wav", ".mp3") + "\"";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = "\"" + "c:\\" + "lame.exe" + "\""; //cesta k lame.exe
psi.Arguments = outfile;

psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//přehrávač
private void button5_Click(object sender, EventArgs e)
{
mciSendString("open \"" + textBox1.Text + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
mciSendString("play MediaFile", null, 0, IntPtr.Zero);
button5.Enabled = false;
button6.Enabled = true;
}

private void button6_Click(object sender, EventArgs e)
{
mciSendString("close MediaFile", null, 0, IntPtr.Zero);
button6.Enabled = false;
button5.Enabled = true;
}
}

}

Nahlásit jako SPAM
IP: 89.102.182.–
Jirka
~ Anonymní uživatel
305 příspěvků
21. 4. 2011   #2
-
0
-

To Jirka : PS: Program dělá to, že když se klikne na první tlačítko, tak se začne nahrávat z mikrofonu, druhým se stopne nahrávání a třetím se to ukládá. Další 2 tlačítka jsou an přehrávání. A já potřebuju, aby když stisknu tlačítko jedna, tak aby se začalo nahrávat a ještě k tomu spustily stopky, které se mi budoiu zobrazovat v LABEL_4 a druhým tlačítkem stopky pausnu.

Nahlásit jako SPAM
IP: 89.102.182.–
Petrroll
~ Anonymní uživatel
151 příspěvků
21. 4. 2011   #3
-
0
-
Nahlásit jako SPAM
IP: 92.62.224.–
Jirka
~ Anonymní uživatel
305 příspěvků
21. 4. 2011   #4
-
0
-

To Petrroll : Tak jsem to zkoušel, ale nejde mi přidat "using System.Windows.Threading". Bez této knihovny to asi neudělám.

Nahlásit jako SPAM
IP: 89.102.182.–
Jirka
~ Anonymní uživatel
305 příspěvků
21. 4. 2011   #5
-
0
-

To Jirka : Sorry. Stačilo si ji přidat. ;-)

Nahlásit jako SPAM
IP: 89.102.182.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Stopky — založil hektor

Stopky — založil Bunny

Stopky — založil Franceq

Stopky — založil iref

Stopky — založil dragon124

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý