То, как я могу распечатать экран, минимизировало окна?

Можно использовать слушателей события, предоставленных Jpa, чтобы сделать что-то при загрузке одной строки дб, т.е.:

@Entity
@Table(name = "TableA")
public class TableA {

    @Id
    @Column(name = "Field1")
    private Long id;

    @Column(name = "Field2")
    private Long field2;

    @Column(name = "Field3")
    private Long field3;

    // ... more associated getter and setter...

    @Transient
    private String field4;

    @PostLoad
    private void onLoad() {
        if (field2 != null) {
            switch (field2.intValue()) {
            case 1:
                field4 = "One";
                break;
            case 2:
                field4 = "Two";
                break;
            default:
                field4 = "Other Number";
                break;
            }
        }
    }
}

(field4 не сохраняются в дб)

(берут это как обходное решение к "не реализованная опция в JPA" как операторы выбора)

6
задан Alon Gubkin 23 September 2012 в 16:50
поделиться

1 ответ

Я почти уверен, что это невозможно, по крайней мере, с помощью внешнего приложения, такого как ваше. Когда окно приложения свернуто, окно не может (и не получает) сообщения WM_PAINT, что означает, что невозможно попросить окно перерисовать себя, пока оно свернуто (или «сфотографировать»). Это ограничение (или правило) Windows API.

Панель задач «обходит это», отображая кэшированное изображение (которое является последним снимком окна, сделанным DWM перед его свертыванием), и поэтому он , а не , фактически делает текущий снимок окна. Вы можете проверить это, запустив приложение, которое периодически обновляется, а затем свернув его - вы увидите, что изображение предварительного просмотра не будет обновлено, пока оно не будет восстановлено.

Единственный способ обойти это - делать то, что делает панель задач: периодически делать снимки нужного окна, а когда оно свернуто, использовать вместо этого кэшированное изображение. Конечно, это означает, что ваше приложение должно было следовать за целевым окном некоторое время заранее (это явно не сработает, если вы в первый раз хотите сделать снимок окна, когда оно свернуто).

3
ответ дан 17 December 2019 в 00:11
поделиться
Другие вопросы по тегам:

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