Щелчок мыши с JNA - PullRequest
       15

Щелчок мыши с JNA

5 голосов
/ 15 февраля 2012

Я пытаюсь смоделировать щелчок мышью в окне с помощью JNA.

public class App {

public static final int WM_LBUTTONUP = 514;
public static final int WM_LBUTTONDOWN = 513;
public static final int WM_LBUTTONDBLCLK = 0x203;
static int WM_CLOSE = 0x10;
final static String winTitle = "Untitled - Notepad";

public static void main(String[] args) throws InterruptedException {
    User32Extra user32 = (User32Extra) Native.loadLibrary("user32", User32Extra.class, W32APIOptions.DEFAULT_OPTIONS);

    WinDef.HWND hwnd = user32.FindWindow(null, winTitle);
    user32.SetForegroundWindow(hwnd);
    Thread.sleep(1000);

    long y = 77 + (22 << 16);//x + (y << 16)
    WinDef.LPARAM l = new WinDef.LPARAM(y);
    WinDef.WPARAM w = new WinDef.WPARAM(0);
    user32.PostMessage(hwnd, WM_LBUTTONDOWN, w, l);
    Thread.sleep(1000);
    user32.PostMessage(hwnd, WM_LBUTTONUP, w, l);
}
}

Он находит окно и выводит его на передний план.но щелчок мышью не работает.Также отправка WM_CLOSE работает.Что не так с щелчком мыши?Проверено на калькуляторе и блокноте.Координаты относительно окна.

1 Ответ

1 голос
/ 15 февраля 2012

Просто дикая догадка: события щелчка должны доставляться не в главное окно, а в сами объекты кнопки назначения.По заданным координатам кнопка находится над главным окном, «пряча» ее, когда происходит настоящий щелчок.

...