Получите заголовок текущего активного окна в Java

Вот обзор параметров к эти map(function, *sequences) функция:

  • function название Вашей функции.
  • sequences любое количество последовательностей, которые обычно являются списками или кортежами. map выполнит итерации по ним одновременно и даст текущие значения function. Вот почему количество последовательностей должно равняться количеству параметров к Вашей функции.

Это кажется, что Вы пытаетесь выполнить итерации для некоторых из function, параметры, но сохранять других постоянными, и к сожалению map не поддерживают это. Я нашел старое предложение добавить такую опцию к Python, но конструкция карты является столь чистой и известной, что я сомневаюсь, что что-то как этот будет когда-либо реализовываться.

Использование обходное решение как глобальные переменные или понимания списка, как другие предположили.

11
задан 30 August 2009 в 16:36
поделиться

3 ответа

Чтобы найти активное окно (будь то фрейм или диалог) в приложении java swing, вы можете использовать следующий рекурсивный метод:

Window getSelectedWindow(Window[] windows) {
    Window result = null;
    for (int i = 0; i < windows.length; i++) {
        Window window = windows[i];
        if (window.isActive()) {
            result = window;
        } else {
            Window[] ownedWindows = window.getOwnedWindows();
            if (ownedWindows != null) {
                result = getSelectedWindow(ownedWindows);
            }
        }
    }
    return result;
}

это из здесь Дополнительные сведения о состоянии окна здесь .

2
ответ дан 3 December 2019 в 08:30
поделиться

Я совершенно уверен, что вы обнаружите, что нет способа перечислить активные окна в чистой Java (я искал довольно усердно раньше), поэтому вам нужно будет написать код для платформ, на которые вы хотите ориентироваться.

  • В Mac OS X вы можете запустить AppleScript, используя "osascript".

  • В X11 можно использовать xwininfo.

  • В Windows, вероятно, можно запустить какой-нибудь VBScript (например, эта ссылка выглядит многообещающе).

Если вы используете SWT, вы можете найти некоторые недокументированные, непубличные методы в библиотеках SWT, поскольку SWT предоставляет обертки для многих API ОС (например, SWT на Cocoa имеет org.eclipse.swt.internal.cocoa.OS#objc_msgSend() методы, которые можно использовать для доступа к ОС). Эквивалентные классы "OS" в Windows и X11 могут иметь API, которые вы можете использовать.

7
ответ дан 3 December 2019 в 08:30
поделиться

Я написал сценарий bash, который регистрирует текущий активное окно: http://www.whitelamp.com/public/active-window-logger.html Он использует исправленную версию wmctrl, но предоставляет подробную информацию о альтернативный (более медленный) метод с использованием xprop и xwininfo.

Ссылки на патч и исходный код wmctrl и скрипт могут быть найдено выше.

2
ответ дан 3 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: