Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
[C#] Konsole oder GUI in Abhängigkeit der Argumente?
- Ersteller Gobble-G
- Erstellt am
krizzelfix
Commander
- Registriert
- Sep. 2005
- Beiträge
- 2.626
Hallo Gobble-G,
wieso startest du nicht einfach das Programm als Console und fragst nach Parametern mit Console.WriteLine(); und wenn der Paramter dabei war dann erstellst du halst die Form.
Sollte nicht so schwer sein.
Grüße
tewes
wieso startest du nicht einfach das Programm als Console und fragst nach Parametern mit Console.WriteLine(); und wenn der Paramter dabei war dann erstellst du halst die Form.
Sollte nicht so schwer sein.
Grüße
tewes
@tewes: Weil man in diesem Fall immernoch die Konsole sieht, wenn sich die GUI öffnet. Man kann diese dann zwar schließen, aber man sieht sie eben doch kurz.
Es scheint so, als hätte Backslash recht, aber vielleicht gibt es einen Workaround. Zwischenzeitlich habe ich weitergeforscht und probiert. Folgendes müsste erfüllt sein, damit ich zufrieden bin:
Mein Code sieht zur Zeit so aus und erfüllt eigentlich alle 4 Punkte:
Das Programm ist im VS als eine Windows-Anwendung markiert. Ist der Parameter /c gegeben, wird versucht, dass Programm mit AttachConsole() mit der Konsole "zu verknüpfen". Klappt das nicht, wird mit AllocConsole() eine neue Konsole geöffnet.
Wenn ich nun aber meine Applikation aus einer Konsole heraus im Konsole-Modus starte, dann beendet sich das Programm und zeigt den Command-Prompt nicht an, obwohl er da ist. Das ist noch etwas nervig und es wäre schön, wenn es dafür noch eine Lösung gäbe...
Es scheint so, als hätte Backslash recht, aber vielleicht gibt es einen Workaround. Zwischenzeitlich habe ich weitergeforscht und probiert. Folgendes müsste erfüllt sein, damit ich zufrieden bin:
- Aus der Konsole ohne Parameter gestartet, soll sich die GUI öffnen.
- Aus der Konsole mit Parameter gestartet, soll das Programm ohne GUI ausgeführt werden.
- Aus Windows (ohne Konsole) heraus ohne Parameter gestartet, soll sich die GUI öffnen.
- Aus Windows (ohne Konsole) heraus mit Parameter gestartet, soll sich eine Konsole öffnen und das Programm ausgeführt werden.
Mein Code sieht zur Zeit so aus und erfüllt eigentlich alle 4 Punkte:
Code:
...
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AttachConsole(int ProcessId);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool FreeConsole();
static int Main(string[] args)
{
if (args.Length > 0 && inStringArray(args,"/c"))
{
//try to attach to existing console. if it fails alloc to console
if (!AttachConsole(-1)) AllocConsole();
...
FreeConsole();
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainWindow());
}
return 0;
}
...
Wenn ich nun aber meine Applikation aus einer Konsole heraus im Konsole-Modus starte, dann beendet sich das Programm und zeigt den Command-Prompt nicht an, obwohl er da ist. Das ist noch etwas nervig und es wäre schön, wenn es dafür noch eine Lösung gäbe...
krizzelfix
Commander
- Registriert
- Sep. 2005
- Beiträge
- 2.626
Kannst du nicht über das Sting[] Args Array die Parameter entgegen nehmen und dann entscheiden was zu tun ist?