Поддержка Olea cc dll в JNA - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь использовать библиотеку JNA для вызова метода cc dll AccessibleObjectFromWindow Olea для проекта Java, над которым я работаю.

Я просмотрел документацию JNA, а также искал пример в Интернете, но не смог найти хорошую ссылку для использования AccessibleObjectFromWindow в Olea cc dll с JNA.

Может ли кто-нибудь, имеющий хороший опыт работы с библиотекой JNA, подтвердить, включает ли JNA Olea cc dll?

Если нет альтернатив использованию Olea, cc dll из программы Java также приветствуется.

Спасибо ..!

1 Ответ

0 голосов
/ 27 мая 2020

Когда вы задаете вопрос «JNA включает», полезно указать, что есть две части проекта JNA. Это артефакт jna, который включает в себя основные функции, и артефакт jna-platform, содержащий отправленные пользователем сопоставления JNA для различных платформ. Я выделяю «отправлено пользователем», поскольку JNA - это проект, поддерживаемый сообществом, а ответ на часто задаваемый вопрос «JNA не хватает функции XXX в сопоставлениях библиотек платформы»: «Нет, это не так, он просто ждет, когда вы добавите ее. :) ".

DLL Olea cc является одним из таких экземпляров. Его еще нет в артефакте jna-platform, но он может быть, если его отправил пользователь. См., Например, пользователь в 2015 году сам сопоставил эту библиотеку, но не предоставил ее сообществу, так что через 5 лет вы воспроизводите это усилие! Если вы прокрутите вниз в этом выпуске JNA, вы увидите образец кода, реализующий ваш метод и несколько других, что было бы fantasti c, если бы вы могли внести свой вклад в JNA!

Между тем, когда отображение не В JNA приведенная выше ссылка на часто задаваемые вопросы дает шаблон для ее реализации. В вашем конкретном случае c код для реализации AccessibleObjectFromWindow будет простым для вас, чтобы вы могли выполнить его в своем собственном проекте. Создайте класс Olea cc со следующим содержимым:

public interface Oleacc extends StdCallLibrary, WinUser, WinNT {

    Oleacc INSTANCE = (Oleacc) Native.loadLibrary("oleacc", Oleacc.class, W32APIOptions.DEFAULT_OPTIONS);

    HRESULT AccessibleObjectFromWindow(HWND win, int objID, Guid.REFIID iid, PointerByReference ptr);
}

И готово! Так это отображение еще в JNA? Нет, но, надеюсь, после того, как вы реализовали его и протестировали свой код, вы можете внести свое отображение в проект, чтобы следующий человек, которому это нужно, мог найти его в JNA!

...