Подтвердить что ты не робот

Захватите диалог "Сохранить изменения" при использовании win32gui и закрытии встроенного приложения в QApplication?

Я внедряю приложение в вкладку в QQpplication pyqt. Когда я закрываю вкладку, это приложение встроено в то, как мне разрешить отображать диалог "Сохранить изменения"?

Я использую это на tab_close:

win32gui.PostMessage(int(wdg.process._handle),win32con.WM_CLOSE,0,0)

Когда я это делаю, я теряю это диалоговое окно, если приложение обычно запускает его.

Missing Prompt

Код выглядит примерно так:

class MainWindow(QTabWidget):
    def __init__(self, parent=None):
        QTabWidget.__init__(self, parent)
        self.setTabsClosable(1)
        self.tabCloseRequested.connect(self.close_tab)

    ...

    def close_tab(self,ind):
        wdg = self.widget(ind)
        win32gui.PostMessage(int(wdg.process._handle),win32con.WM_CLOSE,0,0)
        self.removeTab(ind)
        del wdg

    ...

Это создает такой пользовательский интерфейс (с встроенным Window notepad.exe). Нажатие кнопки "X" на вкладке закрывает "Блокнот", не запрашивая пользователя для сохранения любого ввода.

Встроенный блокнот на вкладке

Как закрыть вкладку и разрешить встроенному приложению предлагать пользователю сохранить свои изменения?

4b9b3361

Ответ 1

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

Блокнот - это только одно из немногих приложений Windows, для которого исходный код доступен бесплатно.
Перекомпилируйте его и измените его в соответствии с вашими задачами.

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

Теперь, если вы действительно хотите продолжить автоматизацию для Windows, вам, вероятно, понадобится что-то вроде https://pywinauto.github.io, в котором есть пример для notepad.exe.