2016-06-28 10 views
0

저는 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 그것은 예외를 제공합니다

누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?

+0

직접 질문에 답하지 않고 jia를 통해 uiautomationcore.dll 호출을 Java로 래핑하는 라이브러리 (https://github.com/mmarquee/ui-automation)를 작성했습니다. COM 호출을 어떻게 감쌌는지 자유롭게 느껴보십시오. 제안, 테스트 등도 환영합니다. – Mmarquee

답변

0

최고의 튜토리얼은 JNA 프로젝트 사이트의 Getting Started 링크입니다.

네이티브 라이브러리 (UIAutomationCore)를로드 한 다음 Java 메소드로 GetRootElement에 대한 함수 선언을 작성하고 JNA 유형을 Java 유형에 맵핑하는 것과 유사한 작업을 수행 할 것입니다.

자세한 내용은 other Win32 library implementations을 확인하십시오.

+0

감사합니다. Daniel. 나는 그걸 가지고 놀 수 있었고 다른 COM 예외에서 끝났습니다. 어쩌면 저를 도울 수 있고 내가 뭘 잘못하고 있다고 말할 수 있습니까? –

+0

'IUIAutomationElement'는 어디에 정의되어 있습니까? –

+0

또한 질문의 범위를 원본과 크게 변경했습니다. 이런 경우에는 전혀 새로운 질문을하는 것이 낫습니다 ... 대부분의 사람들은이 질문에 답을하고 건너 뜁니다. 당신은 (아마) 지금 이걸 읽고있는 나만 붙어있어 ... –