gpt4 book ai didi

c# - 如果应用程序是从 cmd 执行的,则写入命令行

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

我搜索了网络和 Stackoverflow,我没有找到任何东西。如果这个问题已经存在,我很抱歉。

如果我的 C# 应用程序是通过 cmd 调用的,例如:

C:\System32\MyConsoleApplication -parmOne -paramTwo ...

有没有办法写入cmd(例如提供进度信息?)

编辑:因为我使用控制台应用程序,解决方案是 Console.WriteLine 它对我不起作用,因为我的应用程序需要管理员权限(通过 list 文件)并使用普通用户权限调用。在这种情况下,UAC 请求权限并使用应用程序打开一个新的 Cmd。

最佳答案

更好的解决方案:http://www.nerdyhearn.com/blog/157/

这是网站的代码:

[DllImport("kernel32.dll")]
static extern bool AttachConsole(int dwProcessId);
private const int ATTACH_PARENT_PROCESS = -1;

[STAThread]
static void Main(string[] args)
{
// Enable visual elements just like always
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);

// Attach to the parent process via AttachConsole SDK call
AttachConsole(ATTACH_PARENT_PROCESS); // <-- important point here
Console.WriteLine("This is from the main program");

Application.Run(new Form1());
}

您可以在您需要的特殊条件下随意使用 AttachConsole 调用。这更好更灵活,不需要您更改应用程序 list 。如果它是一个 win32 应用程序,将对您的应用程序有好处。如果它是从 cmd 启动的,那么输出将显示为预期。

我的观点:这只是一些在 Unix 世界中如此纯粹和自然的概念的一些无用的微软复杂化。如果您的应用程序是从可视启动器(图标、nautilus..)启动的,那么输出将丢失。您可以从控制台启动您的应用程序并在控制台中获取它。如果需要,您可以重定向输出,这一切都在逻辑上错综复杂且功能强大。对于微软……它臃肿而且妨碍了每个人。

关于c# - 如果应用程序是从 cmd 执行的,则写入命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18396650/

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