gpt4 book ai didi

c# - 在窗口应用程序中写入命令行

转载 作者:行者123 更新时间:2023-11-30 19:22:43 24 4
gpt4 key购买 nike

我正在尝试让我的基于 WinForm 的 C# 也与命令行合作,但我很难让它正常运行。例如,我有这段代码:

    [STAThread]
static void Main(string[] args) {
foreach (string s in args) {
System.Windows.Forms.MessageBox.Show(s);
Console.WriteLine("String: " + s);
}

Mutex appSingleton = new System.Threading.Mutex(false, "WinSyncSingalInstanceMutx");
if (appSingleton.WaitOne(0, false)) {
try {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

//start logger
Logger.singleton.makeOpen(true);
Application.Run(new MainForm(false));
} catch (Exception) {
} finally {
appSingleton.Close();
Logger.singleton.makeOpen(false);
}
} else {
System.Windows.Forms.MessageBox.Show("Sorry, only one instance of WinSync can be ran at once.");
}
}
}

它应该使用 Console.WriteLine 写入控制台,但我什么也没看到,只显示了 MessageBox。

我做错了什么?

最佳答案

尝试使用 AttachConsole(-1) 重定向 Console.Out,对我有用:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace PEFixer
{
static class Program
{
[DllImport("kernel32.dll")]
private static extern bool AttachConsole(int dwProcessId);

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static int Main(string[] args)
{
if (args.Length > 0)
{
AttachConsole(-1);
return Form1.doTransformCmdLine(args);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
return 0;
}
}
}

关于c# - 在窗口应用程序中写入命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/666823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com