Java JNA Postmessage不起作用
我正在尝试使用Postmessage向特定窗口发送击键,但它似乎对我不起作用。这是我的密码Java JNA Postmessage不起作用,java,jna,postmessage,user32,Java,Jna,Postmessage,User32,我正在尝试使用Postmessage向特定窗口发送击键,但它似乎对我不起作用。这是我的密码 import com.sun.jna.platform.win32.User32; import com.sun.jna.platform.win32.WinDef.HWND; import com.sun.jna.platform.win32.WinDef.LPARAM; import com.sun.jna.platform.win32.WinDef.WPARAM; public class ke
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinDef.LPARAM;
import com.sun.jna.platform.win32.WinDef.WPARAM;
public class keystroke {
public static void main(String[] args){
int WM_KEYDOWN = 0x0100;
int WM_KEYUP = 0x0101;
int WM_CHAR = 0x0102;
int VK_A = 0x41;
WPARAM wPARAM = new WPARAM(VK_A);
LPARAM lPARAM = new LPARAM(0);
HWND hwnd = User32.INSTANCE.FindWindow(null, "Notepad"); // window title
User32.INSTANCE.ShowWindow(hwnd, 9); // SW_RESTOR
User32.INSTANCE.SetForegroundWindow(hwnd); // bring to front
User32.INSTANCE.SetFocus(hwnd);
User32.INSTANCE.PostMessage(hwnd, WM_CHAR, wPARAM, lPARAM);
}
}
当我换成这个的时候,它也不起作用
User32.INSTANCE.PostMessage(hwnd, WM_KEYDOWN, wPARAM, lPARAM);
User32.INSTANCE.PostMessage(hwnd, WM_KEYUP, wPARAM, lPARAM);
您需要一个单独的线程来运行事件泵。参见
contrib
中的低级键盘钩子示例。由我自己解决,需要使用FindWindowEx()查找子窗口“编辑”)