winForm (Konsolenanwendung)

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von Ruerte.

    winForm (Konsolenanwendung)

    Hallo Comm.

    Ich habe jetzt ein winForm Projekt als Konsolenanwendung.
    Sprich bei starten das Program per Doppelckick der exe öfnet sich neben der Form eine CMD und über die CMD halt nur die Form.
    Wie bekomm ich es hin das wenn ich es über die Exe starte (sprich ohne atribute) die CMD nicht geöfnet wird und wenn ich es über CMD starte die winForm nicht?

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Okay, erkläre bitte genau, was sich wann, durch welche Aktion öffnet.

    Wenn ich einen Doppelklick auf die .exe Mache, was bekomme ich Wann zu sehen?

    Zum Thema Parameter:
    Du musst eben das args-Array auslesen, das ein Parameter der Main-Methode ist. Ist dessen Length-Property 0, startest du die Form, sonst das CMD, wenn ich dich Richtig verstanden habe.
    @EaranMaleasi ok nochmal komplett.

    Ich weiß wie ich die Args auslesen und habe bis jetzt wenn ich diese verwendet habe dies direkt in der Application.Designer.vb beim Auswahl der Form gemacht. wenn ich jedoch eine winForm auf Konsolenanwendung umstelle habe ich dort scheinbar nicht mehr die möglichkeit rum zu Spielen. Sprich ich weiß aktuell nicht wo mein Projekt ausweählt was es starten soll (CMD oder Form)

    Ich möchte generell das beim Doppelklick der exe oder bei einen NICHT definirten cmdarg die Form gestartet wird.
    Sollte ein definierter cmdarg verwendet werden zb. ...exe -copy ... ... soll die Form nicht gestartet werden

    Ich hoffe ich konnte es nun besser erklären.

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    EaranMaleasi schrieb:

    Okay, Wenn du weißt, wie du ne "extra" Konsole
    Jein nicht ganz (also ich weiß schon wie ich eine Konsole exta öffnen kann das tue ich aber aktuell nicht) meine Frage ist eher wo ich wenn ich folgendes einstelle



    die einstellung zum öffnen der Form finde da die Application.Designer.vb in dem fall leer ist O.o



    sprich beim doppelklick startet er sowohl Form und CMD und ich weiß nicht wo dies definiert ist (da ich es anpassen möchte)

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    @ErfinderDesRades schau ich mir gleich mal an, aber soweit ich das sehe ist das AnwendungsFramework in meinen Fall noch aktiv, müsste es dann nicht eigentlich auch möglich sein dort rum zu fuschen?
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    @ErfinderDesRades das AWF ist "eigentlich" deaktiviert.
    Egal ob ich den Code in ein Modul aus deinen Tut nutze oder nicht startet mir immer meine Form1 und eine CMD
    erklär mir also bitte mal wie ich in dem angehängten Projekt (eig ein leeres neues Projekt mit den Einstellungen)
    definiren kann unter welchen bedingungen die Form1 und unter welchen bedingungen die CMD gestartet werden soll...

    Spoiler anzeigen

    Klick auf .Exe = Nur Form1
    Start über CMD ohne Übergabewert = Nur Form1
    Start über CMD mit wert: Nur CMD sprich Rückgabe in aktueller CMD



    LG Ruerte
    Dateien
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    ach come on! Ist dieser Strict-Off-Schrott denn nie abzuschaffen?

    Visual Studio - Empfohlene Einstellungen

    Edit: tja, sorry - ich kann das Konsolen-Fenster auch nicht verschwinden lassen :/

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    ErfinderDesRades schrieb:

    Strict-Off-Schrott
    Muss ich dich verstehen? Solltest du bei den Project Option Strict on einstellen (was bei mir eigentlich immer der fall ist ich es aber gerade vergessen habe da ich die standarteinstellung auf meinen Lepi noch nicht angepasst habe *gerade nachgeholt*) wirst du genau 0 Fehler sehen zudem ist die dll nicht eingebunden.

    Also come on erst das hirn einschalten vorm meckern...
    (warum sollte auch in einen neu erstellen Projekt ohne Inhalt Otion Strict Off Probleme machen...)

    #Edit: also hast du auch keine Ahnung wo in dem fall die inizalisirung stattfindet O.o hmm... dat ist doof

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ruerte“ ()

    Du musst eine eigene Sub Main zB in einer Class Program erstellen. Dann deaktivierst du das Anwendungsframework und legst die Class Programm als Startobjekt fest. In der Sub Main kannst dann anhand der Args entscheiden ob du die Form aufrufst oder whatever.
    Das ist meine Signatur und sie wird wunderbar sein!
    @Mono Hättest du die Vorigen Antworten gelesen oder meine angelangende Projekt mappe angeschaut hättest du bemerkt das diese Antwort leider 0 bringt. AWF ist eigentlich deaktiviert wird aber scheinbar durch die Tatsache das es als Konsolenanwendung läuft trotzdem verwendet...

    Wenn du weißt wo in meinen Projekt was ich angehangen habe. winForm (Konsolenanwendung) die inizalisirung der FORM / CMD ist bekommst nen eis...

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Na dann stell es auf WindowsFormsanwendung um.
    Im Main brauchst du dann die API AllocConsole:
    pinvoke.net/default.aspx/kernel32.allocconsole

    Danach kannst dann auf die konsole zugreifen und zB deine Konsolenmain aufrufen

    //EDIT
    Wenn du es als Consolenanwendung startest wird automatisch iwo im Hintergrund schon vor der main offenbar AllocConsole ausgeführt. Als Winformanwendung aber nicht, daher stell es einfach um wie ich es dir beschrieben habe und du hast was du wolltest.

    //EDIT 2
    Und ich werde mir dein Projekt nicht anschauen, da ich hier nicht mal ein VB.NET IDE zur Verfügung habe (Nur c#). Aber es geht in C# so wie ich es dir gesagt habe, nur mit dem Unterschied, dass du in VB.NET die main Sub und Program Class selber erstellen musst und als Startobjekt festlegen musst. Da du dich offenbar nicht näher damit befasst hast, konntest du mit der Antwort nichts anfangen. Das ist dennoch noch lange kein Grund so genervt zu reagieren. Du möchtest Hilfe und bist nicht in der Lage selber was auf die Reihe zu bekommen. Also vielleicht überlegst du dir mal, in welchem Ton du schreibst.
    Das ist meine Signatur und sie wird wunderbar sein!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mono“ ()

    @Mono Ich habe es mal in c# getestet weil es in VB zumindest nicht das bietet was ich will (tut es auf C# leider auch nicht)
    Klar dadurch wird eine "neue" Console geöfnet. Ich wollte aber durch die tatsache das ich mein winForm projekt auf eine konsolenanwendung umstelle bewirken das sollte ich per CMD das Programm mit einen arg aufrufe nicht eine neue CMD geöfnet wird sondern die CMD die ich zum aufrufen verwendet habe nun für die Anwendung nutze (das funktionirt auch ich kann halt nur die Startoptionen nicht mehr bearbeiten bzw wenn weiß ich nicht wo)... Hast du dazu evt. auch eine lösung? gerne auch in C#

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    das sollte ich per CMD das Programm mit einen arg aufrufe nicht eine neue CMD geöfnet wird sondern die CMD die ich zum aufrufen verwendet habe nun für die Anwendung nutze


    Beschreib das Näher. Meinst du mit der Windows CMD?

    VB.NET-Quellcode

    1. namespace WindowsFormsApplication2
    2. {
    3. static class Program
    4. {
    5. [System.Runtime.InteropServices.DllImport("kernel32.dll")] private static extern bool AllocConsole();
    6. /// <summary>
    7. /// The main entry point for the application.
    8. /// </summary>
    9. [STAThread]
    10. static void Main(string[] args)
    11. {
    12. if (args.Length > 0)
    13. {
    14. // Iwas steht in den Commandline Args. Öffne console
    15. AllocConsole();
    16. ConsoleMain(args);
    17. }
    18. else
    19. {
    20. //sonst öffnen wir die Form
    21. Application.EnableVisualStyles();
    22. Application.SetCompatibleTextRenderingDefault(false);
    23. Application.Run(new Form1());
    24. }
    25. }
    26. private static void ConsoleMain(string[] args)
    27. {
    28. Console.WriteLine("My Console:");
    29. for (int i = 0; i < args.Length; ++i)
    30. Console.WriteLine("Argument{0} = {1}", i + 1, args[i]);
    31. Console.ReadLine();
    32. }
    33. }
    34. }


    So hab ich es als WindowsFormsanwendung. Wenn ich mit args starte, dann öffnet sich meine console ansonsten die Form1.

    // Edit

    Habe es gerade getestet. Wenn man es aus der Windows cmd startet mit Parameter wird es direkt augegeben und keine neue Console geöffnet. Das wäre nur der Fall, wenn man es aus Windows heraus mit parametern öffnet. Öffnet man es via win cmd ohne parameter wird die form geöffnet. Also keine Ahnung, das klingt für mich so als ist es genau das was du wolltest
    Das ist meine Signatur und sie wird wunderbar sein!

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mono“ ()

    @Mono mit den code den du beschrieben hast öffnet sich bei mir, wenn ich das Programm mit arg. über die win CMD aufrufe eine neue WIN Cmd ...

    ich will aber das dies in der Console steht aus der ich die .exe starte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ruerte“ ()