powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / FindWindow JNA
8 сообщений из 8, страница 1 из 1
FindWindow JNA
    #38048337
igor_zim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Подскажите плиз кто чем сможет.

Есть программа (FoxPro).
Пытвюсь с помощью JNA найти окно программы.
Не находит. Окно не главное. В программе несколько окон. Класс окна у всех окон программы одинаковый. Ищу по тексту заголовка.
Примерно такой код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
package Main;

import com.sun.jna.Native;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef.HWND;
//import com.sun.jna.win32.StdCallLibrary;


public class Main {

    public static void main(String[] args) {
        final User32 lib = (User32) Native.loadLibrary("user32", User32.class);
        HWND hWnd_S = User32.INSTANCE.FindWindow(null, "Who Am I...");
        System.out.println(hWnd_S);
    }
}



Пытаюсь найти окно сканером окон "InqSoft Window Scanner" ( http://kickme.to/inqsoft).
Находит при параметрах "Искать среди всех окон в системе".
JNA скачал последнюю версию с сайта.
FindWindowEX или что то наподобии не нашёл.
Использовать дополнительные DLL не хочестся.

Вопрос как найти окно ?
...
Рейтинг: 0 / 0
FindWindow JNA
    #38048392
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FindWindowEx надо, да; FindWindow ищет только окошки верхнего уровня

скорее всего, самому можно вызвать эту (FindWindowEx) функцию через jna, не используя класс
User32
...
Рейтинг: 0 / 0
FindWindow JNA
    #38048394
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netFindWindow ищет только окошки верхнего уровнявот же:
http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633499(v=vs.85).aspx

авторRetrieves a handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows. This function does not perform a case-sensitive search.

To search child windows, beginning with a specified child window, use the FindWindowEx function.
...
Рейтинг: 0 / 0
FindWindow JNA
    #38048517
igor_zim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.

Думал может какие параметры где указать надо для "FindWindow".

Подскажите тогда такой вопрос :
1. функция "GetWindow". Второй параметр у неё DWORD. Тыкните, какие значения он может принимать.
2. "GetParent" - тоже получается нету в JNA.
...
Рейтинг: 0 / 0
FindWindow JNA
    #38048903
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igor_zimфункция "GetWindow". Второй параметр у неё DWORD. Тыкните, какие значения он может принимать http://msdn.microsoft.com/en-us/library/windows/desktop/ms633515(v=vs.85).aspx

ps в левом верхнем углу поле для поиска
...
Рейтинг: 0 / 0
FindWindow JNA
    #38049488
igor_zim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.

Та нашёл это описание, но блин что то у меня с лыжами.

Нашёл несколько примеров.
Но код :
Код: java
1.
2.
                HWND hWnd_S = User32.INSTANCE.GetWindow(hWnd_H, "GW_CHILD");
                HWND hWnd_S = User32.INSTANCE.GetWindow(hWnd_H, 2);


ругается, мол требуется "DWORD".
И никак не могу понятоь, чего туда вписать.
Может кто подскажет.
...
Рейтинг: 0 / 0
FindWindow JNA
    #38050599
dirt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
igor_zim,

из javadoc к JNA:

WinDef.HWND GetWindow(WinDef.HWND hWnd, WinDef.DWORD uCmd)
Retrieves a handle to a window that has the specified relationship (Z-Order or owner) to the specified window.

и

public static class WinDef.DWORD extends IntegerType
...
Рейтинг: 0 / 0
FindWindow JNA
    #38052807
igor_zim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.
Разобрался.

Параметр надо было к DWORD приводить.
Код: java
1.
        DWORD uCmd_S = new DWORD(5);



И последовательность действий получаем такую :

Ищем оуно программы.
Код: java
1.
HWND hWnd_T = User32.INSTANCE.FindWindow(sModule, null);


Возвращает не главное окно, а одно из окон.

Находим главное окно программы
Код: java
1.
2.
        DWORD uCmd_P = new DWORD(4);
        HWND hWnd_P = User32.INSTANCE.GetWindow(hWnd_T, uCmd_P);



А дальше идём по уровням окон
Код: java
1.
2.
DWORD uCmd_PR = new DWORD(5);
DWORD uCmd_PR = new DWORD(2);


Получаем дочерее/соседнее.

JNA Implementation-Version: 3.5.1 (b22).
Ну гдето так.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / FindWindow JNA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]