2015-09-14 23 views
17

Bir uygulama içinde bir uygulama içine bir QQ uygulama uygulamasında katışıyorum. Sekmeyi kapattığımda, bu uygulama "Değişiklikleri kaydet" iletişim kutusunu görüntülemesine nasıl izin verdiğime nasıl yerleştirilir?win32gui kullanırken ve bir QApplication içinde gömülü bir uygulamayı kapatırken "Değişikliklerinizi kaydet" iletişimini yakalayın.

Ben tab_close bu kullanın: Ben gerçi bunu yaparken uygulama normalde bir yukarı atmak olsaydı

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

, ben, bu iletişim kutusunu kaybederler.

Missing Prompt

kod şuna benzer:

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 

    ... 

Bu (embedded Pencere notepad.exe ile) böyle bir UI üretir. Sekmedeki "X" i tıklamak, kullanıcıyı herhangi bir girişi kaydetmesini istemeden Not Defteri'ni kapatır.

Embedded Notepad in a tab

nasıl sekmeyi kapatmak ve gömülü uygulama yaptıkları değişiklikleri kaydetmek için bir kullanıcıdan izin verebilir?

+0

"WM_CLOSE" ifadesini "WM_QUIT" olarak değiştirirseniz fark var mı? –

+0

@StevenRumbalski, [this] 'e göre (http://stackoverflow.com/questions/3155782/what-is-the-difference-between-wm-quit-wm-close-and-wm-destroy-in-a- windows-pr): Evet. Ama benim durumumda, ikisi de "Kaydet" i yiyorlar. iletişim kutusu – Andy

+1

geri dönüş kodunu uygulamadan elde etmenin bir yolu var mı? Benim tahminim yakın mesajı (eşzamansız olarak) yüklemenizdir, daha sonra sekmeyi kapatırsınız (diğer uygulama için üst öğe ve bu nedenle de 'kaydetme' iletişim kutusu da), bu da her iki pencerenin kapanmasını zorlar. Kesinlikle söyleyemedim, ama önce bakacağım şey buydu. –

cevap

1

Sadece size acı ve dinginlik getirecek bir yoldasın.

Not Defteri, kaynak kodu ücretsiz olan birkaç Windows uygulamasından yalnızca biridir.
Yeniden derleyin ve amacınıza uygun şekilde değiştirin.

Ayrıca, kurtulmak için ihtiyaç duyabileceğiniz başka iletişim kutuları da olduğunu göreceksiniz.

Şimdi, eğer gerçekten Windows için otomasyona devam etmek istiyorsanız, https://pywinauto.github.io gibi bir şeye ihtiyacınız olacaktır, bu da notepad.exe için bir örneğe sahip olacaktır.

+0

Bu, Not Defteri için çalışabilir, ancak diğer uygulamalar hakkında ne olabilir? Buradaki nihai hedef budur ve Notepad basit bir test durumu sağlar – Andy