How do I create a C# app that decides itself whether to show as a console or windowed app?
Make the app a regular windows app, and create a console on the fly if needed.
More details at this link (code below from there)
using System;
using System.Windows.Forms;
namespace WindowsApplication1 {
static class Program {
[STAThread]
static void Main(string[] args) {
if (args.Length > 0) {
// Command line given, display console
if ( !AttachConsole(-1) ) { // Attach to an parent process console
AllocConsole(); // Alloc a new console
}
ConsoleMain(args);
}
else {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
private static void ConsoleMain(string[] args) {
Console.WriteLine("Command line = {0}", Environment.CommandLine);
for (int ix = 0; ix < args.Length; ++ix)
Console.WriteLine("Argument{0} = {1}", ix + 1, args[ix]);
Console.ReadLine();
}
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AllocConsole();
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AttachConsole(int pid);
}
}
How do I create a C# app that decides itself whether to show as a console or windowed app?
Make the app a regular windows app, and create a console on the fly if needed.
More details at this link (code below from there)
using System;
using System.Windows.Forms;
namespace WindowsApplication1 {
static class Program {
[STAThread]
static void Main(string[] args) {
if (args.Length > 0) {
// Command line given, display console
if ( !AttachConsole(-1) ) { // Attach to an parent process console
AllocConsole(); // Alloc a new console
}
ConsoleMain(args);
}
else {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
private static void ConsoleMain(string[] args) {
Console.WriteLine("Command line = {0}", Environment.CommandLine);
for (int ix = 0; ix < args.Length; ++ix)
Console.WriteLine("Argument{0} = {1}", ix + 1, args[ix]);
Console.ReadLine();
}
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AllocConsole();
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
private static extern bool AttachConsole(int pid);
}
}
Developing C# Visual Studio .exes similar to Java
Theres no special thing if you want to open a WPF-window (even in a Console Project).
You can simply add a WPF Form using the Visual Studio Utilities (New/Window or something like this).
To open your window, you have two possibilities:
The first one is to open a dialog modal (the code doesn't continue until the form ist closed)
MyWindow window = new MyWindow();
window.ShowModal();
The second solution is open the window without waiting for the dialog to close(some kind like asynchronous)
MyWindow window = new MyWindow();
window.Show();
You can find further information on this article..
Enjoy programming in C# instead of Java.
Related Topics
Getmanifestresourcestream Returns Null
Lock-Free Multi-Threading Is for Real Threading Experts
Spinwait VS Sleep Waiting. Which One to Use
Remove the Title Bar in Windows Forms
How to Test Database-Related Code with Nunit
Why Is Infinity Printed as "8" in the Windows 10 Console
Set Database Timeout in Entity Framework
How to Split a String into Multiple Values
Visual Studio 2013 Doesn't Discover Unit Tests
What Is the Use of Static Constructors
How to Auto Resize and Adjust Form Controls with Change in Resolution