Als fortgeschritten gilt man erst, wenn man eigene Programme auch ohne Anleitung selber schreiben kann. Beim Kauf eines zweiten Buches würde ich darauf achten, dass es nicht von einer mitgelieferten Library abhängig ist, sondern dich mehr in die "normale" verwendung des .net Framework einweist (Handhabung der Windows::Forms - Klassen). Als Ziel würde ich mir erstmal setzen (wie bereits von GoDhAnD erwähnt) ein eigenes Projekt zu starten. Vielleicht hast du eine gute Idee für ein Spiel oder eine Idee für ein Programm, dass es noch nicht gibt. Es gibt genügend Inspiration im Netz. Am besten schaust du dich in ein paar Internet-Foren um und wirst vielleicht Mitglied. Am besten schaust du dir einfach mal ein paar Beispielcodes. (Fand ich immer sehr hilfreich)

Hier mal ein paar Links:

Da du ja anscheinend mit dem .Net Framwork arbeitest kannst du den Link warscheinlich gebrauchen:

msdn dot microsoft dot com slash en-us slash library slash ms229335(v=vs.90) dot aspx

Einen Newsletter der sehr informativ ist (für eigentlich alle Bereiche):

 w w w dot codeproject dot com

Diese Forum ist eher auf C / C# / C++ spezialisiert:

w w w dot c-plusplus dot de slash forum

Damit konnte ich dir hoffentlich weiterhelfen.

...zur Antwort

Du musst eine Library benutzen, da in der Standard Library keine Funktionen vorhanden sind. Ich glaube, das könnte dir weiterhelfen.

http://www.icsharpcode.net/OpenSource/SharpUSBLib/default.aspx

Der Download: h t t p : / / s o u r c e f o r g e . n e t / p r o j e c t s / s h a r p d e v e l o p / f i l e s / S h a r p U S B L i b /

...zur Antwort

Du musst dir das Minecraft Coder Pack runterladen und dann die Java-Dateien dekompilieren. http://mcp.ocean-labs.de/index.php/MCP_Releases Dazu brauchst du die Original-Dateien (minecraft.jar etc.) Ich hoffe du kannst Englisch. Sonst könnte das alles etwas schwieriger werden.

Ich hoffe das hilft dir. Bei all den anderen schwachsinnigen Antworten muss wenigstens eine weiterhelfen..

...zur Antwort

Da Java eine sehr leichte und verständliche Programmiersprache ist, ist sie auch für Anfänger geeignet. Theoretisch kann man die Grundlagen schon nach 2-3 Wochen beherrschen. Alles kommt nur auf deinen Willen an. Als Start würde ich mir ein Java-Buch kaufen, damit du die Grundlagen begreifst. Danach reicht auch die Online-Dokumentation aus. Zum starten würde ich Eclipse als Editor benutzen, da es sehr benutzerfreundlich und leicht zu bedienen ist.

...zur Antwort

Das geht ganz einfach. Öffne dein Projekt,zu dem du das andere Projekt hinzufügen möchtest. Dann gehst du auf Datei->Hinzufügen->Vorhandenes Projekt. Je nach dem, ob das Projekt angezeigt wird muss du den Dateitypfilter einstellen. Jetzt musst du nur noch den Verweis auf das hinzugefügte Projekt erstellen. Dazu klickst du mit der rechten Maustaste auf das erste Projekt, dem du das andere Projekt hinzugefügt hast. Dann klickst du auf Verweis hinzufügen... . Dann wechselst du in den Reiter Projekte und wählst das zweite Projekt aus und klickst auf Ok. Nun kannst du alle Klassen aus dem anderen Projekt nutzen.

...zur Antwort
Problem mit LWJGL (Textur wird nicht geladen)

Titel lesen.

Screenshot ist angefügt.

Hier einmal der Quellcode:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Random;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.*;
import org.lwjgl.util.glu.GLU;
public class LWJGLTest {
    public LWJGLTest(){
        try {
            Display.setDisplayMode(new DisplayMode(500,500));
            Display.create();
            GL11.glMatrixMode(GL11.GL_PROJECTION);
            GL11.glLoadIdentity();
            GLU.gluPerspective(45, Display.getWidth()/Display.getHeight(), (float) 0.1, 100);
            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            GL11.glClearColor(1, 1, 1, 1);
            GL11.glClearDepth(1.0);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            GL11.glDepthFunc(GL11.GL_LEQUAL);
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            int rotation = 0;
            int textur = 0;
            try {
                textur = loadTextureFromImage(javax.imageio.ImageIO.read(new File("textur.bmp")));
            } catch (IOException e) {e.printStackTrace();}
            while(!Display.isCloseRequested()){
                GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
                GL11.glLoadIdentity();
                GL11.glTranslatef(0.0f, 0.0f, -5f);
                GL11.glRotatef(rotation++, 1, 1, 1);
                GL11.glColor4f(0,0,0,255);
                GL11.glBindTexture(GL11.GL_TEXTURE_2D, textur);
                drawBoxTextured();
                Display.update();
                Display.sync(60);
            }
            Display.destroy();
        } catch (LWJGLException e) {
            e.printStackTrace();
        }
    }
public void drawBoxTextured() {
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glTexCoord2f(0f, 0f);
        GL11.glVertex3f(-1.0f, -1.0f,  1.0f);
        GL11.glTexCoord2f(0f, 1f);
        GL11.glVertex3f( 1.0f, -1.0f,  1.0f);
        GL11.glTexCoord2f(1f, 1f);
        GL11.glVertex3f( 1.0f,  1.0f,  1.0f);
        GL11.glTexCoord2f(1f, 0f);
        GL11.glVertex3f(-1.0f,  1.0f,  1.0f);
        //..Code zum zeichnen der anderen Seiten und GL11.glEnd();
         }
    public static int loadTextureFromImage(BufferedImage image){
        int texture = GL11.glGenTextures();
        GL11.glBindTexture(GL11.GL_TEXTURE_2D,texture);
        int[] data = new int[image.getWidth()*image.getHeight()];
          image.getRGB(0,0,image.getWidth(),image.getHeight(),data,image.getWidth(),0);
        byte[] dataInBytes = new byte[image.getWidth()*image.getHeight()*4];
        for(int i = 0; i < data.length; i++){
            dataInBytes[i*4] = (byte) ((data[i] >> 16) & 0xFF);
            dataInBytes[i*4+1] = (byte) ((data[i] >> 8) & 0xFF);
            dataInBytes[i*4+2] = (byte) (data[i] & 0xFF);
            dataInBytes[i*4+3] = (byte) ((data[i] >> 24) & 0xFF);
        }
        ByteBuffer imageData = ByteBuffer.allocateDirect(dataInBytes.length*4);
        imageData.clear();
        imageData.put(dataInBytes);
        imageData.position(0).limit(dataInBytes.length);
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0,GL11.GL_RGBA, image.getWidth(), image.getHeight(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, imageData);
        GL11.glBindTexture(GL11.GL_TEXTURE_2D,0);
        return  texture;
    }
}

Es werden keine Fehler ausgegeben.

...zum Beitrag

Hat sich erledigt. Ich musste den Tiefentest aktivieren, damit die Textur richtig gezeichnet wird.

...zur Antwort
Problem mit LWJGL (Textur wird nicht geladen)

Titel lesen.

Screenshot ist angefügt.

Hier einmal der Quellcode:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Random;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.*;
import org.lwjgl.util.glu.GLU;
public class LWJGLTest {
    public LWJGLTest(){
        try {
            Display.setDisplayMode(new DisplayMode(500,500));
            Display.create();
            GL11.glMatrixMode(GL11.GL_PROJECTION);
            GL11.glLoadIdentity();
            GLU.gluPerspective(45, Display.getWidth()/Display.getHeight(), (float) 0.1, 100);
            GL11.glMatrixMode(GL11.GL_MODELVIEW);
            GL11.glClearColor(1, 1, 1, 1);
            GL11.glClearDepth(1.0);
            GL11.glEnable(GL11.GL_DEPTH_TEST);
            GL11.glDepthFunc(GL11.GL_LEQUAL);
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            int rotation = 0;
            int textur = 0;
            try {
                textur = loadTextureFromImage(javax.imageio.ImageIO.read(new File("textur.bmp")));
            } catch (IOException e) {e.printStackTrace();}
            while(!Display.isCloseRequested()){
                GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
                GL11.glLoadIdentity();
                GL11.glTranslatef(0.0f, 0.0f, -5f);
                GL11.glRotatef(rotation++, 1, 1, 1);
                GL11.glColor4f(0,0,0,255);
                GL11.glBindTexture(GL11.GL_TEXTURE_2D, textur);
                drawBoxTextured();
                Display.update();
                Display.sync(60);
            }
            Display.destroy();
        } catch (LWJGLException e) {
            e.printStackTrace();
        }
    }
public void drawBoxTextured() {
        GL11.glBegin(GL11.GL_QUADS);
        GL11.glTexCoord2f(0f, 0f);
        GL11.glVertex3f(-1.0f, -1.0f,  1.0f);
        GL11.glTexCoord2f(0f, 1f);
        GL11.glVertex3f( 1.0f, -1.0f,  1.0f);
        GL11.glTexCoord2f(1f, 1f);
        GL11.glVertex3f( 1.0f,  1.0f,  1.0f);
        GL11.glTexCoord2f(1f, 0f);
        GL11.glVertex3f(-1.0f,  1.0f,  1.0f);
        //..Code zum zeichnen der anderen Seiten und GL11.glEnd();
         }
    public static int loadTextureFromImage(BufferedImage image){
        int texture = GL11.glGenTextures();
        GL11.glBindTexture(GL11.GL_TEXTURE_2D,texture);
        int[] data = new int[image.getWidth()*image.getHeight()];
          image.getRGB(0,0,image.getWidth(),image.getHeight(),data,image.getWidth(),0);
        byte[] dataInBytes = new byte[image.getWidth()*image.getHeight()*4];
        for(int i = 0; i < data.length; i++){
            dataInBytes[i*4] = (byte) ((data[i] >> 16) & 0xFF);
            dataInBytes[i*4+1] = (byte) ((data[i] >> 8) & 0xFF);
            dataInBytes[i*4+2] = (byte) (data[i] & 0xFF);
            dataInBytes[i*4+3] = (byte) ((data[i] >> 24) & 0xFF);
        }
        ByteBuffer imageData = ByteBuffer.allocateDirect(dataInBytes.length*4);
        imageData.clear();
        imageData.put(dataInBytes);
        imageData.position(0).limit(dataInBytes.length);
        GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0,GL11.GL_RGBA, image.getWidth(), image.getHeight(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, imageData);
        GL11.glBindTexture(GL11.GL_TEXTURE_2D,0);
        return  texture;
    }
}

Es werden keine Fehler ausgegeben.

...zum Beitrag

Die Textur ist eine 24-bit Bitmap erstellt mit Paint.

...zur Antwort

Hier mal eine Musterlösung:

package me.XTobiasX.TextFelder; //Eher unwichtig, in welchem Paket die Klasse liegt

//Die ganzen Imports kann man noch zusammenfassen
//z.B. import java.awt.*;
//und import javax.swing.*;
import java.awt.Frame;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;

import javax.swing.BoxLayout;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;

@SuppressWarnings("serial") //Nur, damit Eclipse net nervt ;D
public class TheGUI extends Frame implements WindowListener, DocumentListener{
    private JTextField TextField1; //Die Textfelder
    private JTextField TextField2;
    public TheGUI(){    //Der Konstruktor
        super("Titel"); //Das Fenster soll den Titel "Titel" tragen
        this.setLayout(new BoxLayout(this,BoxLayout.Y_AXIS)); //Die beiden TextFelder werden untereiander angeordnet
        TextField1 = new JTextField(); //TextFeld1 erstellen
        TextField2 = new JTextField(); //TextFeld2 erstellen
        this.addWindowListener(this); //Wenn der Schliessen-Button vom Fenster gedrückt wird , soll es reagieren
        this.TextField2.setEditable(false); //Das zweite Textfeld dient ja nur zur Ausgabe
        this.TextField1.getDocument().addDocumentListener(this); //Listener setzen,
        //sodass der Text von TextField2 geändert wird , wenn sich der Text im Textfield1 ändert
        this.add(TextField1); //Die Steuerelemente hinzufügen
        this.add(TextField2); //Die Steuerelemente hinzufügen
        this.pack();    //Damit alle Elemente gut passen
        this.setVisible(true); //Fenster anzeigen
    }
    @Override
    public void windowActivated(WindowEvent e) {
    }
    @Override
    public void windowClosed(WindowEvent e) {
    }
    @Override
    public void windowClosing(WindowEvent e) { //Wenn der Schliessen-Button gedrückt wird, Fenster schliessen
        this.setVisible(false);
        this.dispose();
    }
    @Override
    public void windowDeactivated(WindowEvent e) {
    }
    @Override
    public void windowDeiconified(WindowEvent e) {
    }
    @Override
    public void windowIconified(WindowEvent e) {
    }
    @Override
    public void windowOpened(WindowEvent e) {
    }
    //Wenn sich die erste textbox ändert
    @Override
    public void changedUpdate(DocumentEvent e) {
        this.TextField2.setText(this.TextField1.getText());
    }
    @Override
    public void insertUpdate(DocumentEvent e) {
        this.TextField2.setText(this.TextField1.getText());
    }
    @Override
    public void removeUpdate(DocumentEvent e) {
        this.TextField2.setText(this.TextField1.getText());
    }
}

Das Interface kannst du nun anzeigen, in dem du ein Objekt davon initialisierst

new TheGUI();

Ich hab extra viele Kommentare hinzugefügt, da ich mal annehme, dass du noch eher ein Anfänger im Thema Java bist. Wenn etwas unklar ist, dann einfach kommentieren.

...zur Antwort

Du musst per echo ein Title-Tag übermitteln. So zum Beispiel

 echo(<head><title>DeinTitel</title></head>)

Um das ganze noch zufällig zu machen kannst du ein Array definieren und per zufall ein Element auswählen also:

$Titel = array("Titel1","Titel2");
echo("<head><title>" . $Titel[rand(0,count($Titel)-1)] . "</title></head>");
...zur Antwort

Dein Fehler könnte sein , dass \B als Sonderzeichen erkannt wird. Also muss die Uri so lauten:

Uri("C:\\Beispiellied.mp3");
...zur Antwort

Lade dir am besten den Minecraft-Updater runter. Damit werden alle Dateien neu heruntergeladen.

...zur Antwort

Schau mal hier: http://www.mioplanet.com/rsc/embed_mediaplayer.htm

<OBJECT id="VIDEO" width="320" height="240" 
    style="position:absolute; left:0;top:0;"
    CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"
    type="application/x-oleobject">

    <PARAM NAME="URL" VALUE="Pfad zum Video">
    <PARAM NAME="SendPlayStateChangeEvents" VALUE="True">
    <PARAM NAME="AutoStart" VALUE="False">
    <PARAM name="uiMode" value="full">
    <PARAM name="PlayCount" value="9999">
</OBJECT>
...zur Antwort
C# Spielrunen programmieren

Hey, fürs Studium haben wir in Informatik gerade ein Projekt laufen. Unsere aufgabe ist es einen Reaktionstest zu programmieren. Das läuft so, dass es einen Startbutton gibt. Und 5 verschieden farbige panels. Drückt manauf den Start butto, soll sich der Text zu zB "rot" ändern und in einer anderen zufälligen farbe erscheinen. Unser problem ist, dass der Knopf zwar die Farbe ändert, aber da wir es über eine schleife versuchen, ändert sich die Farbe alle 1-3 sec (da es ein rekationstest, soll nach einer Runde (also nach dem ein panel gedrückt wurde) eine zufällige zeit zwischen 1-3 sec. vergehen, bis die neue Aufgabe gestellt wird. Insgesamt soll es 15 rundne geben und am ende schnellste, langsamste und durchschnittszeit ausgegeben werden. Und eigtl. soll sich die Farbe des textes erst wieder ändern, wenn eine Spielrunde vergangen ist. Meine idee ist, dass man die Schleife irgendwie anhalten können muss. Also dass sie die anweisungen erst wieder holt, wenn ein panel gedrückt wurde. Wie bekomm ich das hin? ist die schleife hier ein falscher weg?

hier mal der problemteil des programms:

public partial class Form1 : Form { private Color correctColor = Color.Red; private int[] score = new int[15]; //die zeiten private int currentRound = 0; //wie vielter durchlauf ist gerade private Boolean inProgress = false;

    public Form1()
    {
        InitializeComponent();
    }

    private void BtnStartClicked(object sender, EventArgs e)
    {
        if (!inProgress)
        {
            inProgress = true;
            int randomTime;

            while (currentRound < 15) //schleife von hier (15 mal)
            {

                Random rand = new Random();
                randomTime = rand.Next(2000) + 1000;

                Timer t1 = new Timer(); // Timer anlegen
                t1.Interval = randomTime; // Intervall festlegen, hier 100 ms

                t1.Tick += new EventHandler(t1_Tick); // Eventhandler ezeugen der beim Timerablauf aufgerufen wird
                t1.Start(); // Timer starten
                //in der schleife currentRound erhöhen
            }   //schleife bis hier
            inProgress = false;
        }
...zum Beitrag

Teil 2 meiner Antwort:

        private void WindowResized(Object Sender, EventArgs e){
            this.SetButtons();
        }
        private void SetButtons()
        {
            if (this.StartButton == null)
            {
                StartButton = new Button();
                StartButton.ForeColor = Color.Black;
                StartButton.Text = "Start";
                StartButton.Click += StartButtonClicked;
                this.Controls.Add(StartButton);
            }
            this.StartButton.Size = new Size(this.ClientRectangle.Width, this.ClientRectangle.Height / 11);
            this.StartButton.Location = new Point(0, this.ClientRectangle.Height - StartButton.Height);
            for (int i = 0; i < buttons.Length; i++)
            {
                if(buttons[i] == null){
                    buttons[i] = new Button();
                    buttons[i].Visible = true;
                    buttons[i].Click += ButtonClick;
                    this.Controls.Add(buttons[i]);
                }
                buttons[i].Size = new Size(this.ClientRectangle.Width / 5, this.ClientRectangle.Height / 10);
                int x = ((this.ClientRectangle.Width - buttons[i].Width) / 2) + (int)(Math.Sin((Math.PI * 2) / buttons.Length * (i + (buttons.Length/2))) * ((this.ClientRectangle.Width - buttons[i].Width) / 2));
                int y = ((this.ClientRectangle.Height - buttons[i].Height - StartButton.Height) / 2) + (int)(Math.Cos((Math.PI * 2) / buttons.Length * (i + (buttons.Length / 2))) * ((this.ClientRectangle.Height - buttons[i].Height - StartButton.Height) / 2));
                buttons[i].Location = new Point(x, y);
            }
            this.Refresh();
        }
        private void TimerTick(Object Sender, EventArgs e)
        {
            TimeToWaitForChange.Stop();
            timeOfChange = DateTime.Now;
            for (int i = 0; i < buttons.Length; i++)
            {
                buttons[i].BackColor = Colors[random.Next(0,Colors.Length)];
            }
            SelectedColor = buttons[random.Next(0, buttons.Length)].BackColor;
            StartButton.Text = SelectedColor.Name;

            //StartButton.ForeColor = Color.FromArgb(255 - SelectedColor.R, 255 - SelectedColor.G, 255 - SelectedColor.B); // Gegenfarbe
            StartButton.ForeColor = Colors[random.Next(0, Colors.Length)];
            for (int i = 0; i < buttons.Length; i++)
            {
                buttons[i].Enabled = true;
            }
        }
        private void ButtonClick(Object Sender, EventArgs e)
        {
            if (!TimeToWaitForChange.Enabled)
            {
                if (((Button)Sender).BackColor.Equals(SelectedColor))
                {
                    reactionTimes[RoundCounter] = DateTime.Now - timeOfChange;
                    StartButton.Text = "Ok";
                    if (RoundCounter < reactionTimes.Length - 1)
                    {
                        WaitTimer.Interval = 500;
                        WaitTimer.Enabled = true;
                        WaitTimer.Start();
                        RoundCounter++;
                        TimeToWaitForChange.Enabled = true;
                        TimeToWaitForChange.Interval = random.Next(1000, 3000);
                        TimeToWaitForChange.Start();
                        for (int i = 0; i < buttons.Length; i++)
                        {
                            buttons[i].Enabled = false;
                        }
                    }
                    else
                    {
                        Auswertung A = new Auswertung(reactionTimes);
                        this.Visible = false;
                        A.FormClosing += AuswertungClosing;
                        A.ShowDialog();
                    }
                }
            }
        }
        private void AuswertungClosing(Object Sender, EventArgs e)
        {
            this.Close();
        }
        private void WaitTimerTick(Object Sender, EventArgs e)
        {
            StartButton.Text = "Warten ...";
            WaitTimer.Enabled = false;
        }
    }
}
...zur Antwort
C# Spielrunen programmieren

Hey, fürs Studium haben wir in Informatik gerade ein Projekt laufen. Unsere aufgabe ist es einen Reaktionstest zu programmieren. Das läuft so, dass es einen Startbutton gibt. Und 5 verschieden farbige panels. Drückt manauf den Start butto, soll sich der Text zu zB "rot" ändern und in einer anderen zufälligen farbe erscheinen. Unser problem ist, dass der Knopf zwar die Farbe ändert, aber da wir es über eine schleife versuchen, ändert sich die Farbe alle 1-3 sec (da es ein rekationstest, soll nach einer Runde (also nach dem ein panel gedrückt wurde) eine zufällige zeit zwischen 1-3 sec. vergehen, bis die neue Aufgabe gestellt wird. Insgesamt soll es 15 rundne geben und am ende schnellste, langsamste und durchschnittszeit ausgegeben werden. Und eigtl. soll sich die Farbe des textes erst wieder ändern, wenn eine Spielrunde vergangen ist. Meine idee ist, dass man die Schleife irgendwie anhalten können muss. Also dass sie die anweisungen erst wieder holt, wenn ein panel gedrückt wurde. Wie bekomm ich das hin? ist die schleife hier ein falscher weg?

hier mal der problemteil des programms:

public partial class Form1 : Form { private Color correctColor = Color.Red; private int[] score = new int[15]; //die zeiten private int currentRound = 0; //wie vielter durchlauf ist gerade private Boolean inProgress = false;

    public Form1()
    {
        InitializeComponent();
    }

    private void BtnStartClicked(object sender, EventArgs e)
    {
        if (!inProgress)
        {
            inProgress = true;
            int randomTime;

            while (currentRound < 15) //schleife von hier (15 mal)
            {

                Random rand = new Random();
                randomTime = rand.Next(2000) + 1000;

                Timer t1 = new Timer(); // Timer anlegen
                t1.Interval = randomTime; // Intervall festlegen, hier 100 ms

                t1.Tick += new EventHandler(t1_Tick); // Eventhandler ezeugen der beim Timerablauf aufgerufen wird
                t1.Start(); // Timer starten
                //in der schleife currentRound erhöhen
            }   //schleife bis hier
            inProgress = false;
        }
...zum Beitrag

Auswertung.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Game
{
    public class Auswertung : Form
    {
        private TimeSpan[] reactionTimes;
        private Label Fastest;
        private TimeSpan fastest;
        private Label Slowest;
        private TimeSpan slowest;
        private Label Average;
        private TimeSpan average;

        public Auswertung(TimeSpan[] reactionTimes)
        {
            this.Size = new Size(300, 200);
            this.MinimumSize = Size;
            this.Resize += Resizing;
            this.Text = "Auswertung";
            this.Fastest = new Label();
            this.Slowest = new Label();
            this.Average = new Label();
            for (int i = 0; i < reactionTimes.Length; i++)
            {
                if (i == 0)
                {
                    fastest = reactionTimes[0];
                    slowest = reactionTimes[0];
                    average = reactionTimes[0];
                }
                else
                {
                    average += reactionTimes[i];
                    if(reactionTimes[i] > slowest){
                        slowest = reactionTimes[i];
                    }
                    else if (reactionTimes[i] < fastest)
                    {
                        fastest = reactionTimes[i];
                    }
                }
            }
            average = new TimeSpan(average.Ticks / reactionTimes.Length);
            Fastest.Text = "Schnellste Zeit:\r\n" + fastest.Hours + " Stunden " + fastest.Minutes + " Minuten " + fastest.Seconds + " Sekunden " + fastest.Milliseconds + " Millisekunden";
            this.Controls.Add(Fastest);
            Slowest.Text = "Langsamste Zeit:\r\n" + slowest.Hours + " Stunden " + slowest.Minutes + " Minuten " + slowest.Seconds + " Sekunden " + slowest.Milliseconds + " Millisekunden";
            this.Controls.Add(Slowest);
            Average.Text = "Durchschnitt:\r\n" + average.Hours + " Stunden " + average.Minutes + " Minuten " + average.Seconds + " Sekunden " + average.Milliseconds + " Millisekunden";
            this.Controls.Add(Average);
            SetLayout();
        }

        private void SetLayout()
        {
            this.Slowest.Size = new Size(ClientRectangle.Width,ClientRectangle.Height/3);
            this.Fastest.Size = Slowest.Size;
            this.Average.Size = Slowest.Size;
            this.Slowest.Location = new Point(0, 0);
            this.Fastest.Location = new Point(0, this.ClientRectangle.Height / 3);
            this.Average.Location = new Point(0, this.ClientRectangle.Height / 3 * 2);
        }
        private void Resizing(Object Sender, EventArgs e)
        {
            SetLayout();
        }
    }
}

Form1.cs :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Game
{
    public partial class Form1 : Form
    {
        private Random random;
        private Button[] buttons;
        private int RoundCounter;
        private DateTime timeOfChange;
        private TimeSpan[] reactionTimes;
        private Color[] Colors;
        private Button StartButton;
        private Timer TimeToWaitForChange;
        private int ButtonCount = 5;
        private int Rounds = 15;
        private Color SelectedColor;
        private Timer WaitTimer;

        public Form1()
        {
            this.Text = "Reaktionstest";
            random = new Random();
            buttons = new Button[ButtonCount];
            reactionTimes = new TimeSpan[Rounds];
            TimeToWaitForChange = new Timer();
            TimeToWaitForChange.Enabled = false;
            TimeToWaitForChange.Tick += TimerTick;
            Colors = new Color[] {Color.Red, Color.Green, Color.Blue, Color.Yellow, Color.Orange, Color.Purple, Color.White, Color.Black, Color.Lime, Color.Magenta, Color.Cyan, Color.Brown};
            WaitTimer = new Timer();
            WaitTimer.Enabled = false;
            WaitTimer.Interval = 500;
            WaitTimer.Tick += WaitTimerTick;

            this.Resize += this.WindowResized;
            this.MinimumSize = new Size(250, 250);
            this.SetButtons();
        }

        private void StartButtonClicked(Object Sender, EventArgs e)
        {
            //StartButton.Enabled = false;    //Zeigt die Button-Text-Farbe nicht mehr an wenn aktiviert >:-(
            StartButton.Text = "Warten ...";
            StartButton.BackColor = Color.Gray;
            TimeToWaitForChange.Enabled = true;
            TimeToWaitForChange.Interval = random.Next(1000,3000);
            TimeToWaitForChange.Start();
        }
...zur Antwort

Das einzige, was du machen musst ist in die XAML-datei bei dem Label / Button Foreground="#FFRRGGBB" hinzufügen. RR/GG/BB durch deine Farbe ersetzen.

...zur Antwort

Das was man auf dem Bild sieht ist gar kein USB-Anschluss, sondern irgend eine andere Buchse. Was du benötigst ist ein Adabter. Leider kann ich dir auch nicht genau sagen, was für eine Buchse das ist, somit muss du weiter forschen. Alle die mir Bekannten sehen anders aus, also ist das schonmal kein weit verbreiteter Standard.

...zur Antwort
Console.WriteLine("Was wollen sie tun");
            Console.WriteLine("[1] Outlook starten ");
            Console.WriteLine("[2] Outlook killen");

            switch(Convert.ToInt32(Console.ReadLine())){
                case 1:
                    System.Diagnostics.Process OProcess = new System.Diagnostics.Process();
                    OProcess.StartInfo.FileName = "OUTLOOK.EXE";
                    OProcess.Start();
                    break;
                case 2:
                    int Count = 0;
                    while (System.Diagnostics.Process.GetProcessesByName("OUTLOOK").Length > 0)
                    {
                        try
                        {
                            System.Diagnostics.Process Process = System.Diagnostics.Process.GetProcessesByName("OUTLOOK")[0];
                            Process.CloseMainWindow(); //Erst Fenster schließen
                            Process.Close(); //Dann wenn Outlook noch läuft beenden
                            Process.Kill(); //Wenn Outlook nicht reagiert abwürgen xD

                        }catch(InvalidOperationException){}  //Fängt den Error auf, falls der Prozess nach Close schon beendet wurde

                        Console.WriteLine("Prozess "+(++Count)+" gestoppt");
                    }
                    break;
                default:
                    Console.WriteLine("Keine Gültige Angabe");
                    break;
            }

Das müsste bei so ziemlich allen Versionen funktionieren. Bei Office 2010 gehts.

...zur Antwort

Theoretisch könntest du das ganz einfach lösen, indem du dein Programm jedes mal neu per PHP erstellst (exec "CSharpCompiler DeineProjekltdatei") und dann an den Downloader übermittelst. Vor dem Erstellen musst du noch per PHP in der Quellcodedatei die ID verändern, so dass du jedes mal eine andere ID im Programm hast. Außerdem musst du die erstellte Datei auf dem Server jedes mal löschen, damit diese auch keine 2 mal heruntergeladen wird. Dafür muss aber das Net-Framework auf dem Server installiert sein und du musst volle Rechte zum ausführen der Programme haben.

Konkretes Beispiel: DasProgramm.cs (Deine ganzen Programmdaten) Beispielinhalt:

namespace MeinProgramm{
 public class Programm{
 [STAThread]
  public static void Main(){
   System.Windows.Forms.MessageBox.Show("Deine ID ist" + ID.ID.ID.ToString());
  }
 }
}

Programm.txt mit dem folgenden Inhalt:

/target:winexe /win32icon:"ProgrammIcon.ico" /out:Programm.exe IDKopie.cs Programm.cs

ID.cs Mit dem folgenden Inhalt:

 namespace ID{public static class ID{public readonly Int32 ID = 

Das PHP-Programm kopiert nun jedes mal die Datei und fügt einfach den Wert der ID, das Semikolon und die zwei Klammern ein. Also sieht das Ergebnis zum Beispiel so aus:

Inhalt der IDKopie.cs:

namespace ID{public static class ID{public readonly Int32 ID = 9999;}}

Das Programm muss jetzt nur noch erstellt werden:

exec("C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /nologo @Programm.txt ") //Den Pfad des C# Compilers möglicherweise abändern

Und fertig ist das Programm(Programm.exe) zum Herunterladen.

Den Programmicon nicht als ProgrammIcon.ico vergessen!! Wenn du noch zusätzliche Dateien hinzufügen musst (Also noch mehr Quelldateien) dann einfach den Namen hinten an Programm.txt anfügen

...zur Antwort