Как я могу убедиться, что мое консольное приложение C # всегда впереди?Например, если человек отходит от консоли, как я могу определить, что консоль потеряла фокус, и вернуть ее вперед?У меня есть это консольное приложение C #, которое ждет, когда пользователи будут сканировать штрих-коды, если по какой-то причине кто-то уходит из окна консоли, тогда данные штрих-кода будут «потеряны».Я взглянул на этот код, размещенный в другом потоке, однако я не могу заставить его работать: вывести окно консоли на передний план в c # Этот код, благодаря @ILan, поддерживает консоль наверхуиз всех окон, но он не устанавливает «фокус», чтобы продолжать захват поступающих данных.
class Program
{
[DllImport("user32.dll")]
static extern bool SetWindowPos(IntPtr hWnd,
IntPtr hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
uint uFlags);
static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
const uint SWP_NOSIZE = 0x0001, SWP_NOMOVE = 0x0002, SWP_SHOWWINDOW = 0x0040;
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
static void Main()
{
IntPtr handle = GetConsoleWindow();
SetWindowPos(handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
Console.WriteLine($"Hello handle: {handle}");
Console.ReadLine();
}
}