是否可以在不使用DLL导入的情况下从代码中最小化控制台应用程序?
[DllImport("Kernel32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern IntPtr GetConsoleWindow();
[DllImport("User32.dll", CallingConvention = CallingConvention.StdCall, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool ShowWindow([In] IntPtr hWnd, [In] Int32 nCmdShow);
到目前为止,我只找到需要这个的解决方案,我想知道如果没有它就不可能。
答案 0 :(得分:2)
否强>
控制台应用程序或通过控制台运行的任何命令行应用程序对托管控制台本身的窗口没有足够的访问权限。 几乎所有使用控制台应用程序的实例都没有任何意义。
在许多情况下,这样的窗口甚至可能不存在。
考虑一个远程控制台会话,该应用程序正在另一台机器上执行,您只能将输出发送到您的控制台。远程应用程序如何关心您正在使用的窗口?对于远程应用程序知道的内容,“你”可能是一个脚本,甚至没有一个窗口可以开始。
答案 1 :(得分:0)
正如r41n已经说明的那样,没有。
但是,如果您的目的是隐藏控制台,并且应用程序不需要任何用户输入 - 您应该能够在应用程序设置中将输出类型更改为Windows应用程序。这将在启动时隐藏控制台