저는 JNA를 처음 접했고 실종 상태입니다. "GetRootElement"메서드를 IUIAutomation 인터페이스UIAutomationCore.dll 내 Java 프로그램에 사용하고 싶습니다.JNA를 사용하여 UIAutomationCore.dll에 액세스하십시오.
다른 튜토리얼이나 코드를 사용해 주시겠습니까?
매우 감사드립니다.
UPDATE :
내가 다니엘에서 제공하는 링크와 함께 무언가를 시도하고 지금은 다른 문제에 직면 해있다. 클래스가 등록되지 않았습니다.. 여기 내 코드입니다 :
Exception in thread "main" com.sun.jna.platform.win32.COM.COMException: Class not registered (puArgErr=)
at com.sun.jna.platform.win32.COM.COMUtils.checkRC(COMUtils.java:112)
at com.sun.jna.platform.win32.COM.COMUtils.checkRC(COMUtils.java:95)
at com.sun.jna.platform.win32.COM.util.Factory.createObject(Factory.java:151)
at net.java.dev.jna.jna.FactorySecond.createCUIAutomation(FactorySecond.java:11)
at net.java.dev.jna.jna.test.othermethod(test.java:21)
at net.java.dev.jna.jna.test.main(test.java:17)
: IUIAutomation.java
@ComObject(clsId="{30CBE57D-D9D0-452A-AB13-7AC5AC4825EE}")
public interface IUIAutomation extends IUnknown {
@VTID(5)
net.java.dev.jna.jna.IUIAutomationElement getRootElement();
}
public abstract class FactorySecond {
private FactorySecond() {}
public static net.java.dev.jna.jna.IUIAutomation createCUIAutomation() {
Factory factory = new Factory();
return factory.createObject(net.java.dev.jna.jna.IUIAutomation.class);
}
}
public class test {
public interface UIAutomationCore extends Library{
UIAutomationCore INSTANCE = (UIAutomationCore) Native.loadLibrary("UIAutomationCore", UIAutomationCore.class);
IUIAutomationElement GetRootElement();
}
public static void main(String[] args) {
othermethod();
//System.out.println(a.toString());
}
public static void othermethod(){
IUIAutomation a = FactorySecond.createCUIAutomation();
System.out.println(a.toString());
}
}
FactorySecond.java
test.java 그것은 예외를 제공합니다
누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?
직접 질문에 답하지 않고 jia를 통해 uiautomationcore.dll 호출을 Java로 래핑하는 라이브러리 (https://github.com/mmarquee/ui-automation)를 작성했습니다. COM 호출을 어떻게 감쌌는지 자유롭게 느껴보십시오. 제안, 테스트 등도 환영합니다. – Mmarquee