Как вы отправляете нажатия клавиш в неактивное окно?

<style type="text/css">
        div {
  text-align: center;
         }

         .img1{
            width: 150px;
            height: 150px;
            border-radius: 50%;
         }

         span{
            display: block;
         }
    </style>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <input type='password' class='secondInput mt-4 mr-1' placeholder="Password">
  <span class='dif'></span>
  <br>
  <button>ADD</button>
</div>

<script type="text/javascript">

$('button').click(function() {
  $('.dif').html("<img/>");

})
-1
задан 16 January 2019 в 19:26
поделиться

1 ответ

Я не знаком с JNA, но приведу следующую информацию с точки зрения winapi. Надеюсь, что это поможет вам найти решение.

Существуют также SendMessageA и SendMessageW. Некоторые говорят, что SendMessage слишком стар для какой-то операционной системы, но я не могу это проверить.

SendMessageA и SendMessageW представляют версию функции SendMessage для Ascii и Unicode. Они имеют одинаковые возможности. См. « Юникод в Windows API ».

Я борюсь с правильной реализацией SendMessage (A?) (W?) (), так как он не реализован в JNA.

Так что не стесняйтесь использовать SendMessage в JNA.

Для неактивного окна вы не можете получить сообщение о нажатии клавиши, например WM_KEYUP, из системы, потому что у вас нет фокуса. Но вы можете смоделировать систему для отправки такого рода сообщения в неактивное окно. Вы можете обратиться к следующему коду. ( Начальная тема )

#include <windows.h>
#include <iostream>
#include <string>


int main()
{
    LPCWSTR Target_window_Name = TEXT("Untitled - Notepad"); //<- Has to match window name
    HWND hWindowHandle = FindWindow(NULL, Target_window_Name);
    HWND EditClass = FindWindowEx(hWindowHandle, NULL, L"Edit", NULL);

    SendMessage(EditClass, WM_KEYDOWN, 0x5A, 0x002C0001);
    SendMessage(EditClass, WM_CHAR, 0x7A, 0x002C0001); //"z"
    SendMessage(EditClass, WM_KEYUP, 0x5A, 0xC02C0001);

    return(0);
}

Также как вы создаете WPARAM и LPARAM? MSDN говорит, что есть конкретные сообщения.

Вам нужно создать WPARAM и LPARAM на основе другого сообщения. Например, сообщение WM_KEYDOWN, wParam - это код виртуального ключа несистемного ключа. См. Коды виртуальных клавиш . В приведенном выше примере кода код виртуальной клавиши Z-ключа равен 0x5A. Таким образом, wParam 0x5A. То же самое с сообщением WM_KEYUP. В сообщении WM_CHAR wParam - это код символа ключа. Вы можете найти в таблице Ascii, строчная буква «z» 0x7A. Вам также необходимо предоставить код сканирования для этих сообщений. Вы можете искать "Спецификация кода сканирования клавиатуры - Microsoft". Код сканирования "Z" - 0x2C. Последний бит 30 и 31 lParam сообщения WM_KEYUP всегда равен 1. Таким образом, он начинается с 0xC0.

Дополнительные ссылки: " WM_KEYDOWN message " " WM_KEYUP message " " WM_CHAR message "

0
ответ дан Rita Han - MSFT 16 January 2019 в 19:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: