Python Как сохранить MessageboxW поверх всех остальных окон? - PullRequest
0 голосов
/ 29 апреля 2018

Контекст:

У меня есть небольшой скрипт, который предупреждает пользователя о событии, создавая окно сообщения, используя встроенное окно сообщений Windows (Ref: MSDN MessageBox ), которое импортируется с помощью ctypes. Этот скрипт для ОС Windows.

Проблема:

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

Что я хочу

Я хочу держать окно сообщения всегда поверх других окон. Если это не может быть сделано, то альтернативно, есть ли способ увеличить размеры окна сообщения?

Пример кода:

import ctypes

ctypes.windll.user32.MessageBoxW(0, text, title, 0x00010000)

1 Ответ

0 голосов
/ 29 апреля 2018
import ctypes

text = 'Using MB_SYSTEMMODAL'
title = 'Some Title'

ctypes.windll.user32.MessageBoxW(0, text, title, 0x1000)

MB_SYSTEMMODAL (0x1000) имеет стиль WS_EX_TOPMOST (0x40000).

Функция MessageBoxEx, кажется, хорошо работает с использованием просто стиль WS_EX_TOPMOST (0x40000).

import ctypes

text = 'Using WS_EX_TOPMOST'
title = 'Some Title'

ctypes.windll.user32.MessageBoxExW(0, text, title, 0x40000)

Функция MessageBox не имеет параметров для изменения размера. возможно альтернатива, такая как tkinter или другой инструментарий графического интерфейса, может изменить размер окна сообщения (хотя, может быть, нет, если это просто оболочка для MessageBoxW) или вы можете создать собственное окно для использования.

См. Функция MSDN MessageBox для значений для использования.

См. Также Функция MSDN MessageBoxEx .

...