У меня много окон с одинаковыми именами, например калькулятор.Как я могу получить HWND из String?
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 в другой программе. Я знаю только значение String для HWND. Можно ли отличить [email protected]
String to HWND?
Если да, то как я могу это сделать? Пожалуйста, помогите ..
Почему вы преобразовываете указатель на строку в первую очередь? Прекратите это делать, и вам не нужно будет анализировать текст до указателя. –
Я отправляю эту строку в flex app, где не указан указатель или класс hwnd. Мне нужно вызвать функции в Java из ActionScript для выполнения некоторых операций на hwnd. – Vishnu
Итак, вы пытаетесь предоставить actioncript уникальными (строковыми) клавишами, с помощью которых вы можете ссылаться на родные окна? – technomage