相关疑难解决方法(0)

在Windows应用程序中显示控制台

有没有办法在Windows应用程序中显示控制台?

我想做这样的事情:

static class Program
{
    [STAThread]
    static void Main(string[] args) {
        bool consoleMode = Boolean.Parse(args[0]);

        if (consoleMode) {
            Console.WriteLine("consolemode started");
            // ...
        } else {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# console winforms

80
推荐指数
5
解决办法
14万
查看次数

在发布模式下Console.SetOut出现问题?

我在我的代码中有一堆Console.WriteLines,我可以在运行时观察到.我与我也写过的本地库进行通信.

我想在本地库中粘贴一些printf并观察它们.但是我没有在运行时看到它们.

我创建了一个令人费解的hello world应用程序来演示我的问题.当应用程序运行时,我可以调试到本机库并看到调用hello world.输出永远不会落在文本作者身上.请注意,如果相同的代码作为控制台应用程序运行,那么一切正常.

C#:

    [DllImport("native.dll")]
    static extern void Test();

    StreamWriter writer;

    public Form1()
    {
        InitializeComponent();

        writer = new StreamWriter(@"c:\output.txt");
        writer.AutoFlush = true;
        System.Console.SetOut(writer);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Test();
    }
Run Code Online (Sandbox Code Playgroud)

和原生部分:

__declspec(dllexport) void Test()
{
    printf("Hello World");
}
Run Code Online (Sandbox Code Playgroud)

更新:下面的hamishmcn开始讨论调试/发布版本.我在上面的button1_click方法中删除了本机调用,只是用标准的Console.WriteLine.net调用替换它.当我在调试模式下编译并运行它时,消息被重定向到输出文件.当我切换到释放模式时,呼叫没有被重定向.控制台重定向似乎只在调试模式下工作.我该如何解决这个问题?

.net c c#

13
推荐指数
1
解决办法
1827
查看次数

createProcess函数的DETACH_PROCESS和CREATE_NO_WINDOW进程创建标志之间有什么区别

我一直试图理解这两个进程创建标志之间的区别.在MSDN文档不明确的区别.

  • CREATE_NO_WINDOW是否导致进程具有控制台(标准输入/输出流已初始化)而不显示窗口而DETACH_PROCESS根本没有控制台?
  • 对孩子的孩子过程有什么影响?
  • 什么是行为矩阵,描述每个组合发生的事情(父有控制台,父有没有控制台)X(子可执行文件需要控制台(主),子可执行文件不需要控制台(WinMain)).

windows operating-system system process

12
推荐指数
1
解决办法
4174
查看次数

标签 统计

c# ×2

.net ×1

c ×1

console ×1

operating-system ×1

process ×1

system ×1

windows ×1

winforms ×1