我在标题中看到了一些关于问题的解决方案,但它们都没有按照我的意愿行事。
我有ch = Console.ReadKey().KeyChar;
,如果用户输入'y',我希望该应用进入后台。如果用户输入'n',程序会继续,就像什么都没发生一样这可能吗?我做了很多研究,但仍然找不到适合我的研究。
这是我现在所拥有的:
char ch = '0';
Console.WriteLine("Enter Log File Destenation:");
string url = Console.ReadLine();
Console.WriteLine("Run In BackGround ? (Defaul Set to False)";
ch = Console.ReadKey().KeyChar;
if (ch == 'y')
{
//Move To Background
}
// continue with program
这是一个比特币率记录器。它从网站标题获取比特率并将其记录到txt文件中,该目标由用户在程序开始时设置。 设置目的地后,它会询问它是否应该在后台运行。 无论哪种方式,程序都会进入log(true)循环。
答案 0 :(得分:0)
使用SetWindowPos方法和参数HWND_BOTTOM
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[DllImport("user32.dll", SetLastError=true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowRect(IntPtr hWnd, out W32RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct W32RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
}
public const uint HWND_BOTTOM = 1;
static void Main(string[] args)
{
IntPtr handle = Process.GetCurrentProcess().MainWindowHandle;
W32RECT rect;
GetWindowRect(handle , out rect); //to get position and size of your console
SetWindowPos(handle, IntPtr.Zero, rect.Left, rect.Top, rect.Right - rect.Left, rect.Bottom - rect.Top, HWND_BOTTOM);//to set background position of your console with the same size and screen's position
}
}
}
未经测试但会有效
来源:http://www.developpez.net/forums/d199635/environnements-developpement/delphi/setforegroundwindow-setbackgroundwindow/(如果需要,我可以翻译)