我有很多同名的窗口,例如計算器。如何從字符串中獲取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