You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
161 lines
4.3 KiB
161 lines
4.3 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.Drawing; |
|
using System.Drawing.Imaging; |
|
using System.IO; |
|
using System.Linq; |
|
using System.Net; |
|
using System.Net.Sockets; |
|
using System.Text; |
|
using System.Threading.Tasks; |
|
using System.Windows; |
|
using System.Windows.Controls; |
|
using System.Windows.Data; |
|
using System.Windows.Documents; |
|
using System.Windows.Input; |
|
using System.Windows.Media; |
|
using System.Windows.Media.Imaging; |
|
using System.Windows.Navigation; |
|
using System.Windows.Shapes; |
|
|
|
using System.Runtime.InteropServices; |
|
|
|
|
|
|
|
namespace LaOlaWelle |
|
{ |
|
/// <summary> |
|
/// Interaktionslogik für MainWindow.xaml |
|
/// </summary> |
|
public partial class MainWindow : Window |
|
{ |
|
public int ApplicationID; |
|
|
|
[DllImport("winmm.dll")] |
|
static extern Int32 mciSendString(string Befehl, string buffer, int bufferSize, IntPtr hwndCallback); |
|
|
|
ServerGUI server; |
|
bool serverActive = false; |
|
|
|
public MainWindow() |
|
{ |
|
InitializeComponent(); |
|
|
|
System.Windows.Forms.NotifyIcon Icon = new System.Windows.Forms.NotifyIcon(); |
|
Icon.BalloonTipText = "Activated"; |
|
|
|
Bitmap bmp = new Bitmap(1, 1); |
|
bmp.SetPixel(0, 0, System.Drawing.Color.AliceBlue); |
|
|
|
Icon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(System.Reflection.Assembly.GetEntryAssembly().ManifestModule.Name); |
|
Icon.ShowBalloonTip(int.MaxValue); |
|
Icon.Visible = true; |
|
Icon.Click += Icon_Click; |
|
Icon.DoubleClick += Icon_DoubleClick; |
|
} |
|
|
|
private void Icon_DoubleClick(object sender, EventArgs e) |
|
{ |
|
Application.Current.Shutdown(); |
|
} |
|
|
|
private async void button_Click(object sender, RoutedEventArgs e) |
|
{ |
|
if (Equals(clientNumber.Text, "0")) |
|
{ |
|
server = new ServerGUI(); |
|
server.Owner = this; |
|
server.Show(); |
|
serverActive = true; |
|
this.Hide(); |
|
return; |
|
} |
|
|
|
try { |
|
ApplicationID = int.Parse(clientNumber.Text); |
|
teach.IsEnabled = false; |
|
|
|
UdpClient client = new UdpClient(); |
|
IPEndPoint localEp = new IPEndPoint(IPAddress.Any, 2222); |
|
client.Client.Bind(localEp); |
|
|
|
IPAddress multicastaddress = IPAddress.Parse("239.0.0.222"); |
|
client.JoinMulticastGroup(multicastaddress); |
|
await Task.Run(() => |
|
{ |
|
while (true) |
|
{ |
|
var data = client.Receive(ref localEp); |
|
using (var stream = new MemoryStream(data)) |
|
{ |
|
stream.Position = 0; |
|
using (var reader = new BinaryReader(stream)) |
|
{ |
|
var message = new Message(); |
|
if (!Equals(reader.ReadString(), message.Valid)) |
|
{ |
|
return; |
|
} |
|
if (reader.ReadInt32() == ApplicationID) { |
|
OpenCloseCD((state)reader.ReadInt32()); |
|
} |
|
} |
|
} |
|
} |
|
}); |
|
} catch (Exception) { |
|
MessageBox.Show("Eingabe ungültig"); |
|
return; |
|
} |
|
} |
|
|
|
private void OpenCloseCD(state state) |
|
{ |
|
if(state == state.open) |
|
{ |
|
mciSendString("set CDAudio door open", null, 127, (IntPtr)0); |
|
} else |
|
{ |
|
mciSendString("set CDAudio door closed", null, 127, (IntPtr)0); |
|
} |
|
} |
|
|
|
private void Icon_Click(object sender, EventArgs e) |
|
{ |
|
|
|
if (serverActive) |
|
{ |
|
if (!server.IsVisible) |
|
{ |
|
server.Show(); |
|
} |
|
|
|
if (server.WindowState == WindowState.Minimized) |
|
{ |
|
server.WindowState = WindowState.Normal; |
|
} |
|
|
|
server.Activate(); |
|
server.Topmost = true; |
|
server.Topmost = false; |
|
server.Focus(); |
|
return; |
|
} |
|
|
|
if (!this.IsVisible) |
|
{ |
|
this.Show(); |
|
} |
|
|
|
if(this.WindowState == WindowState.Minimized) |
|
{ |
|
this.WindowState = WindowState.Normal; |
|
} |
|
|
|
this.Activate(); |
|
this.Topmost = true; |
|
this.Topmost = false; |
|
this.Focus(); |
|
} |
|
} |
|
}
|
|
|