Thaana Paana Ответов: 0

C# вызов/удержание/отпускание клавиш ( не работает на игровом управлении)


Следующий код содержит ключи и освобождает его
[DllImport("user32.dll", SetLastError = true)]
        static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);

        public const int KEYEVENTF_KEYUP = 0x02;
        public const int VK_W = 0x57;

        private void timer1_Tick(object sender, EventArgs e)
        {
            keybd_event(VK_W, 0, 0, 0);
            // keybd_event(VK_W, 0, KEYEVENTF_KEYUP, 0);
        }



Это действительно работает, но не в Майнкрафте. После часа головной боли я обнаружил, что не могу вызвать определенные элементы управления minecraft. например если бы у меня был ключ 'идти вперед' значение 'ж' я не могу назвать этот ключ programmitcaly если я изменить это ключ к чему-то еще. Но есть и другие приложения для нажатия клавиш, которые работают с играми, как они это делают? Существует ли какой-либо другой API, который способен вызывать и удерживать ключи?

Что я уже пробовал:

Протестированный код на других приложениях работает нормально.

johannesnestler

звучит странно, вы уверены, что нет никакой другой проблемы (отсутствие фокуса или что-то в этом роде?)
AFAIK keybd_event был заменен на SendInput (возможно, прочтите замечания docu для SendInput https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-sendinput)

Thaana Paana

Я знаю, что очень опаздываю, но я думаю, что это java, и я действительно отказался от этого.

0 Ответов