Как запустить консольное приложение в фоновом режиме [C #] - PullRequest
0 голосов
/ 10 октября 2018

Я хочу запустить этот код в фоновом режиме (консоль не отображается), поэтому я изменил тип вывода на Приложение Windows , но затем программа не работает.

КогдаЯ изменяю вывод обратно на Консольное приложение , тогда все работает, но оно не работает в фоновом режиме ... Если вы знаете какое-либо лучшее решение или знаете уже написанное программное обеспечение, которое делает то же самое, пожалуйстазакомментируйте это здесь:)

Код в основном копирует текст в буфер обмена из ресурса при нажатии клавиши.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Resources;
using System.Reflection;

namespace EzClipBoard
{
    class Program
    {
        [STAThreadAttribute]
        static void Main(string[] args)
        {
            int exit = 1;
            string bubblesort = codes.ResourceManager.GetString("bubblesort");
            string insertion = codes.ResourceManager.GetString("insertion");

            while(exit != 0)
            {
                if (Console.ReadKey(true).Key == ConsoleKey.X)
                {
                    Clipboard.SetText(bubblesort);
                }

                else if (Console.ReadKey(true).Key == ConsoleKey.Y)
                {
                    Clipboard.SetText(insertion);
                }

                else if (Console.ReadKey(true).Key == ConsoleKey.Escape)
                {
                    exit = 0;
                }

            }
        }
    }
}

1 Ответ

0 голосов
/ 10 октября 2018

Так что мой способ исправить вашу проблему не обязательно запускать процесс в фоновом режиме.это просто другой подход к решению.

class Program
{
    [DllImport("user32.dll")]
    public static extern int GetAsyncKeyState(Int32 i);

    static void Main(string[] args)
    {

        while (true)
        {
            Thread.Sleep(100);

            for (int i = 0; i < 255; i++)
            {
                int keyState = GetAsyncKeyState(i);
                if (keyState == 1 || keyState == -32767)
                {
                    Console.WriteLine(i);
                    if (i == 88 ) // X Key
                    {
                        Console.WriteLine(i);
                        //Write what's gonning to happen when 'Y' pressed

                        break;
                    }
                    else if (i == 89) // Y Key
                    {
                        Console.WriteLine(i);
                        //Write what's gonning to happen when 'Y' pressed
                        break;
                    }
                    else if (i == 27) // Escape Key
                    {
                        Console.WriteLine(i);
                        //Write what's gonning to happen when 'Y' pressed

                        break;
                    }
                }
            }
        }
    }
}

А вот ссылка на список ключей: https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.keys?redirectedfrom=MSDN&view=netframework-4.7.2 Так что подумайте о решении следующим образом: наша ОС всегда проверяет,нажатые клавиши, так почему бы не использовать его?Этот "user32.dll" является нашим пользовательским интерфейсом ОС.поэтому мы просто взаимодействуем с этим существующим пользовательским интерфейсом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...