我有很多同名的窗口,例如计算器。如何从字符串中获取HWND?
User32Extra.INSTANCE.FindWindow(null,"Calculator")
上面的脚本给我发现了第一个计算器的HWND。
我已经使用EnumWindows来查找所有的HWND。
final HashMap<HWND,String> hm=new HashMap<HWND,String>();
User32.INSTANCE.EnumWindows(new User32.WNDENUMPROC() {
@Override
public boolean callback(Pointer hWnd, Pointer arg) {
HWND hWnd2 = new HWND(hWnd);
byte[] windowText = new byte[512];
User32.INSTANCE.GetWindowTextA(hWnd, windowText, 512);
String wText = Native.toString(windowText).trim();
if (!wText.isEmpty() && User32.INSTANCE.IsWindowVisible(hWnd2) && wText.equals("Calculator")) {
hm.put(hWnd2,wText);
}
return true;
}
}, null);
for(HWND hwnd:hm.keySet()){
System.out.println(hwnd.toString());
}
以上脚本给输出
本土@ 0x20816
本土@ 0x50362
本土@ 0x1206ae
我没有这种访问HashMap在另一个程序中。我只知道HWND的字符串值。 是否可以将[email protected]
字符串转换为HWND?
如果是的话我该怎么做?请帮忙..
你为什么首先将指针转换为字符串?停止这样做,你不需要将文本解析回指针。 –
我将这个字符串发送到flex应用程序,其中没有定义指针或hwnd类。我必须从actionscript调用Java中的函数才能在hwnd上执行一些操作。 – Vishnu
所以你试图提供独特的(字符串)键与您可以参考本机窗口的动作? – technomage