From d282c1fb64ae570caab951247e6ead4b9059043d Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Thu, 10 Apr 2014 08:19:58 +0200 Subject: [Qt] catch Windows shutdown events while client is running - prevents unsafe shutdowns on Windows, which is known to be able to cause problems with wallet.dat - if a users ends a Windows session, this will initiate a client shutdown and show a Windows dialog, that tells the user what is going on (for Windows Vista and higher it will even show a reason for blocking the Windows session end) --- src/qt/winshutdownmonitor.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/qt/winshutdownmonitor.h (limited to 'src/qt/winshutdownmonitor.h') diff --git a/src/qt/winshutdownmonitor.h b/src/qt/winshutdownmonitor.h new file mode 100644 index 0000000000..4c76d2c816 --- /dev/null +++ b/src/qt/winshutdownmonitor.h @@ -0,0 +1,29 @@ +// Copyright (c) 2014 The Bitcoin developers +// Distributed under the MIT/X11 software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#ifndef WINSHUTDOWNMONITOR_H +#define WINSHUTDOWNMONITOR_H + +#ifdef WIN32 +#include +#include + +#if QT_VERSION >= 0x050000 +#include // for HWND + +#include + +class WinShutdownMonitor : public QAbstractNativeEventFilter +{ +public: + /** Implements QAbstractNativeEventFilter interface for processing Windows messages */ + bool nativeEventFilter(const QByteArray &eventType, void *pMessage, long *pnResult); + + /** Register the reason for blocking shutdown on Windows to allow clean client exit */ + static void registerShutdownBlockReason(const QString& strReason, const HWND& mainWinId); +}; +#endif +#endif + +#endif // WINSHUTDOWNMONITOR_H -- cgit v1.2.3