Anwendung als Dienst/Konsole mit Benutzer Interaktion



  • Hallo,

    ich stehe vor einem Problem, eine Anwendung zu schreiben, die im Hintergrund bestimmte Prozesse überwacht. Es soll aber, wenn bestimmtes Ereigniß eintritt,
    eine GUI-Oberfläche angezeigt werden, wo der Anwender dann Aktionen auswählen kann.
    Wie kann man das in C++ realisieren? Am besten wäre mit .NET.
    Ich habe mir 2 Lösungen ausgedacht:
    1.Dienst mit Interaktion (es scheint für mich als C++ Einsteiger eine schwere Wahl zu sein. Wie ich irgendwo im Foren gelesen habe, muß man dafür einen Agenten erstellen)
    2.Eine Konsolenanwendung, aus der man dann eine GUI-Fenster erzeugt (technisch machbar, aber bei den dynamischen Events, bin ich im Moment stehengeblieben)
    Kann mir da jemand helfen?
    Danke
    Grüße



  • .Net gibst in C++ nur in Verbindung CLI. Das nennt isch dann C++/CLI und hat imo nicht mehr viel mit Standard C++ zu tun. Da ist sehr vieles recht anderst. Also praktisch eine eigene Programmiersprache.

    Ja, meist werden GUI's mittels Events und Agents (in C++ eher Funktionsobjekte genannt) umgesetzt.

    Wenn das ganze allerdings eher eine rudimentäre Sache werden soll (also GUI mässig), dann kannst du das ganz gut nativ mit der WinAPI implementieren, wenn man nur mal eben auf einen Knopf drücken muss und sonst nicht viel Interaktion hat reicht das alle mal.



  • ja, gut, mir ist im Prinzip egal, hauptsache ich komme ans ziel, allerdings mein Nebenziel war in .NET sich einzuarbeiten.
    Deswegen trotzdem eine Frage, ist das überhaupt mit .net zu lösen?
    Gruß



  • Ja, klar geht das. (Man kann so ziemlich alles mit jeder Sprache machen. ;))

    Allerdings hat die Sprache, die du dann da nutzt nicht mehr viel mit C++ gemeinsam. Da würde ich persönlich dann eher gleich C# empfehlen, weil diese Sprache auch für das .NET Framework ausgelegt worden ist.



  • Gut, dann konkrett.
    Ich habe eine CLR-Konsolenanwendung erstellt.
    Dann ein Fenster mit einem Button erzeugt.
    Dem Button möchte ich dynamischen OnClick Event zuweisen.
    Also so in etwa:

    Form^ form1; //hier kommt der Fehler
    Button^ button1;//hier kommt der Fehler
    // und dann natürlich Folgefehler
    void form1_Load(Object^ sender, EventArgs^ e)
    {
    button1->Click +=
    gcnew EventHandler(form1, &form1::button1_Click);
    }

    void button1_Click(Object^ sender, EventArgs^ e)
    {
    // ToDo die Anwendungen starten und Daten übergeben

    }
    int main(array<System::String ^> ^args)
    {
    ...
    form1 = gcnew Form;
    button1 = gcnew Button;
    button1->Text = "OK";
    ..
    form1->Controls->Add(button1);
    //
    form1->Load += gcnew EventHandler(form1, &form1::form1_Load);
    form1->ShowDialog();
    ...
    }

    Also, die Deklaration der Variablen in Konsolenanwendung unklar.
    Dann, in gcnew EventHandler(form1, &form1::button1_Click); statt form1 this übergeben?
    Sind die Events richtig deklariert?
    Danke
    Gruß



  • Du bist immer noch im falschen Forum. 😉

    Hier gehst um C++ und nicht um C++/CLI. (ja, so unterschiedlich sind die Sprachen..)


Log in to reply