2014-02-22 11 views
0

나는 이라는 창 앞에 JNA을 가져 오려고합니다.자바 FindWindow() - 'FindWindow'함수를 찾는 동안 오류가 발생했습니다 : 지정된 프로 시저를 찾을 수 없습니다.

import com.sun.jna.Native; 
import com.sun.jna.win32.StdCallLibrary; 
import com.sun.jna.platform.win32.WinDef.HWND; 

public class ToFront { 

public static interface User32 extends StdCallLibrary { 
    final User32 instance = (User32) Native.loadLibrary ("user32", User32.class); 
    HWND FindWindow(String winClass, String title); 
    boolean ShowWindow(HWND hWnd, int nCmdShow); 
    boolean SetForegroundWindow(HWND hWnd); 

} 


public static void main(String[] args) { 
    HWND hwnd = User32.instance.FindWindow(null, "MyWindowTitle"); 
    User32.instance.ShowWindow(hwnd, 9); 
    User32.instance.SetForegroundWindow(hwnd); 
} 

} 

나는 다음과 같은 예외를 java.lang.UnsatisfiedLinkError: Error looking up function 'FindWindow': The specified procedure could not be found.

+0

JNA에는 표준 창 기능에 대한 정의가 있습니다. 'com.sun.jna.platform.win32.User32'를보십시오. 정의를 사용할 수도 있고, 자신의 정의를 선호하는 경우 설치가 자신의 설정과 다른지 확인할 수 있습니다. – jdigital

답변

2

확인 함수의 철자를 얻고있다. 종속성 워커를 사용하여 dll에 해당 함수가 있는지 확인할 수 있습니다.

시 : 나는 그는 함수입니다 USER32.DLL 열 때 나는

:FindWindowA,FindWindowExA,FindWindowExW,FindWindowW 
1

당신은 FindWindowEx를 호출하는 다음 코드를 사용할 수 있습니다 발견했다. FindFindow는이 기사에 따라 하위 창을 검색하지 않습니다. http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499(v=vs.85).aspx

import com.sun.jna.Native; 
import com.sun.jna.platform.win32.User32; 
import com.sun.jna.platform.win32.WinDef.HWND; 
import com.sun.jna.win32.StdCallLibrary; 

public class SomeClass 
{ 
    public static interface User32 extends StdCallLibrary 
    { 
     final User32 instance = (User32) Native.loadLibrary ("user32", User32.class); 
     HWND FindWindowExA(HWND hwndParent, HWND childAfter, String className, String windowName); 
     HWND FindWindowA(String className, String windowName); 
    } 

    public static void main(String[] args) 
    { 
     HWND hwndShell = User32.instance.FindWindowExA(null, null, "Shell_TrayWnd", null); 
     HWND hWnd = User32.instance.FindWindowExA(hwndShell, null, "Start", "Start");  
    } 
}