2011-10-22 15 views
2

ユーザーがalt-f4を押してアプリケーションを閉じるのを防ぐために私のアプリケーションでcloseEventを追加しました。私の問題は、シャットダウンまたはスタートメニューで手動でコンピュータを再起動しても何も起こりません。python pyqt4 closeEventはWindowsの再起動/シャットダウンを防止しますか?

def closeEvent(self, event):  
    event.ignore() 

このコードも試してみますが、if TRUEステートメントには進まませんでした。

def keyPressEvent(self, event): 
     if event.key() == QtCore.Qt.Key_F4 and (event.modifiers() & 
     QtCore.Qt.AltModifier): 
        print 'do something' 
+2

'keyPressEvent'、' event'などで 'Alt + F4'や' Ctrl + Alt + Del'のようなシステムショートカットをトラップすることはできません。閉じるイベントは、キープレスイベントが完了する前に発生します。しかし、あなたは_完全にユーザーがウィンドウを閉じるのを防ぐ必要がありますか?なぜ確認ダイアログを表示しないのですか? – ekhumoro

+0

セキュリティ上の理由からです。アプリケーションを終了してはならず、別のコンピュータからリモートでしか制御できないため、シャットダウン/強制終了によるリモート再起動に問題がないのはなぜですか? – unice

+0

ウイルスやマルウェアを作成しているような音です – Falmarri

答えて

0

私はあなたがシャットダウンからシステムを防止するため、またはシャットダウンにそれを許可するかどうかわからないんだけど、システムがシャットダウンされたとき、あなたは、通常と呼ばれるQApplication.commitDataを見ている必要があり、かつQSessionManager

たとえば、無視するべき正常終了イベントと、closeEvent機能のシステムによるものを区別するために、commitDataにフラグを設定することができます。

関連する問題