Как установить хук на другой процесс?

от вопрос уже есть ответ здесь:

Захват клавиш клавиатуры в фоновом режиме 2 ответа

Итак, у меня есть консольное приложение C # с формой, которое я хочу открыть с помощью горячих клавиш. Скажем для примераCtrl + < открывает форму. Итак, я получил код для обработки globalkeylistener сейчас, но, похоже, мне не удалось его реализовать. Он сделал цикл while, чтобы предотвратить закрытие программы, и я попытался получить ввод от пользователя с помощью метода kbh_OnKeyPressed.

Я попытался реализовать это так:

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Globalkey
{
    static class Program
    {
        [DllImport("user32.dll")]
        private static extern bool RegisterHotkey(int id, uint fsModifiers, uint vk);

        private static bool lctrlKeyPressed;
        private static bool f1KeyPressed;


        [STAThread]
        static void Main()
        {

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            LowLevelKeyboardHook kbh = new LowLevelKeyboardHook();
            kbh.OnKeyPressed += kbh_OnKeyPressed;
            kbh.OnKeyUnpressed += kbh_OnKeyUnpressed;
            kbh.HookKeyboard();

            while(true) { }

        }

        private static void kbh_OnKeyUnpressed(object sender, Keys e)
        {
            if (e == Keys.LControlKey)
            {
                lctrlKeyPressed = false;
                Console.WriteLine("CTRL unpressed");
            }
            else if (e == Keys.F1)
            {
                f1KeyPressed = false;
                Console.WriteLine("F1 unpressed");
            }
        }

        private static void kbh_OnKeyPressed(object sender, Keys e)
        {
            if (e == Keys.LControlKey)
            {
                lctrlKeyPressed = true;
                Console.WriteLine("CTRL pressed");
            }
            else if (e == Keys.F1)
            {
                f1KeyPressed = true;
                Console.WriteLine("F1 pressed");
            }
            CheckKeyCombo();
        }

        static void CheckKeyCombo()
        {
            if (lctrlKeyPressed && f1KeyPressed)
            {
                Application.Run(new Form1());
            }
        }
    }
}

Ответы на вопрос(1)

Ваш ответ на вопрос