最小化控制台应用程序
Minimize console application
是否可以在不使用 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);
到目前为止我只找到了需要这个的解决方案,我想知道没有它是否不可能。
否
控制台应用程序或任何通过控制台 运行 的命令行应用程序没有足够的权限访问托管控制台本身的 window。
对于几乎所有使用控制台应用程序的情况,这种可能性几乎没有任何意义。
在很多情况下,这样的 window 甚至可能不存在。
想想远程控制台会话,应用程序正在另一台机器上执行,您只能将输出发送到您的控制台。远程应用程序怎么可能关心你正在使用的 window?对于远程应用程序所知,"you" 可能是一个脚本,甚至没有 window 开头。
正如 r41n 所说,没有。
但是,如果您打算隐藏控制台,并且应用程序不需要任何用户输入 - 您应该能够在应用程序设置中将输出类型更改为 Windows 应用程序。这将在启动时隐藏控制台
是否可以在不使用 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);
到目前为止我只找到了需要这个的解决方案,我想知道没有它是否不可能。
否
控制台应用程序或任何通过控制台 运行 的命令行应用程序没有足够的权限访问托管控制台本身的 window。 对于几乎所有使用控制台应用程序的情况,这种可能性几乎没有任何意义。
在很多情况下,这样的 window 甚至可能不存在。
想想远程控制台会话,应用程序正在另一台机器上执行,您只能将输出发送到您的控制台。远程应用程序怎么可能关心你正在使用的 window?对于远程应用程序所知,"you" 可能是一个脚本,甚至没有 window 开头。
正如 r41n 所说,没有。
但是,如果您打算隐藏控制台,并且应用程序不需要任何用户输入 - 您应该能够在应用程序设置中将输出类型更改为 Windows 应用程序。这将在启动时隐藏控制台