- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我希望以编程方式从命令行运行我的 Windows 窗体应用程序之一。在准备过程中,我已将其自身类中的逻辑与 Form 分开。现在,我一直在尝试让应用程序根据命令行参数的存在来回切换。
这是主类的代码:
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
string[] args = Environment.GetCommandLineArgs();
if (args.Length > 1) // gets passed its path, by default
{
CommandLineWork(args);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
private static void CommandLineWork(string[] args)
{
Console.WriteLine("It works!");
Console.ReadLine();
}
Form1
是我的表单,It works!
字符串只是实际逻辑的占位符。
现在,当从 Visual Studio 中运行它时(使用命令行参数),短语 It works!
被打印到输出中。但是,当运行/bin/Debug/Program.exe 文件(或/Release 就此而言)时,应用程序崩溃。
我的做法是否正确?让我的逻辑类成为由两个单独的应用程序加载的 DLL 是否更有意义(即花费更少的开发时间)?还是有什么我不知道的完全不同的东西?
提前致谢!
最佳答案
如果检测到命令行参数,则需要 P/Invoke AllocConsole()。在 this thread 中查看我的答案对于所需的代码。 C# 示例位于页面下方。在这里重复,因为我不相信那个糟糕的论坛网站:
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
AllocConsole();
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();
}
}
关于c# - 作为 Windows 窗体或控制台应用程序运行的 .NET 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2813942/
对于一个科学实验,我写了一个turtle.py ,它会打开一个 800x480 的窗口并绘制一个缓慢增长的黑点。 turtle.py以 C:\Users\kaza>python C:\Users\ka
我开发了一个 swing 应用程序,但每次运行应用程序时都会打开一个新窗口。我希望如果一个窗口已经打开,则其他窗口不允许打开。 最佳答案 Here是一个 Java 单一应用实例的例子: A singl
有没有办法检测主进程中 Electron 的结构? process.platform 似乎也在 x64 机器上返回 win32,我没有在文档中找到任何获取架构的选项。 最佳答案 你试过 process
public short[] HanningWindow(short[] signal_in ,int pos ,int size) { for (int i= pos; i < pos+si
我有一个具有这些属性的 Electron 窗口: mainWindow = new BrowserWindow({ width: 800, height: 600, title: "Aqu
我有一个 Ubuntu 工作站,我正在尝试引导一个 Windows 节点。 Windows 节点在端口 2222 上打开了 ssh。我一直在关注 http://docs.opscode.com/plu
我是一名优秀的程序员,十分优秀!