Я понимаю, что здесь есть похожие вопросы, и я посмотрел на них, я просто не могу применить решения для моей собственной проблемы.
Я пишу MP3-плеер для Pi с использованием Visual Studio (C#) на P C, затем с помощью Mono на Pi, чтобы запустить его. Поскольку Mono, похоже, не имеет библиотеки MP3 (рад, что меня поправили), мой обходной путь - использовать интерфейс gui для управления mp3-плеером из командной строки (omxplayer). У меня есть рабочий тестовый интерфейс, который sh через Pi от моего P C для тестирования каждый раз.
Проблема в том, что когда я нажимаю кнопку Button1, чтобы запустить его, он отлично работает в том, что mp3 игры. Но как только я нажал кнопку 2, чтобы отправить приложению клавишу «p», которая должна приостановить программу, оно просто вышло. В конечном итоге у меня будет куча кнопок, посылающих нажатия клавиш для управления им, как при следующем пропущенном останове и т. Д. 1017 *. Я проверил функциональность с терминала, и он работает нормально. Любые предложения будут оценены.
Вот мой код.
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
ProcessStartInfo procStartInfo;
System.Diagnostics.Process proc;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "Button Clicked";
procStartInfo = new ProcessStartInfo("omxplayer", "/home/pi/Music/Debug/Mutter.mp3 &");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
private void button3_Click(object sender, EventArgs e)
{
SendKeys.Send("{p}");
}
}
}
Как я пытался объяснить в комментариях, не глобальный, но не совсем правильный. C# сделал это
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "Button Clicked";
ProcessStartInfo procStartInfo = new ProcessStartInfo("omxplayer", "/home/pi/Music/Debug/Mutter.mp3 &");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
}