#ifndef WINDOWFINDER_H #define WINDOWFINDER_H #include #include #ifdef Q_OS_WIN struct IconDirEntry { quint8 nWidth; quint8 nHeight; quint8 nNumColorsInPalette; quint8 nReserved; qint16 nNumColorPlanes; qint16 nBitsPerPixel; quint32 nDataLength; quint32 nOffset; }; #endif // Q_OS_WIN enum class KeyEventType : qint8 { PRESS, RELEASE, PRESS_AND_RELEASE }; Q_DECLARE_METATYPE(KeyEventType) class WindowData { public: WindowData() = default; ~WindowData() = default; WindowData(const WindowData &) = default; WindowData &operator=(const WindowData &) = default; void importDataFromSetting(const QString &value); QString processName = ""; QString processPath = ""; QString processWindowTitle = ""; }; Q_DECLARE_METATYPE(WindowData); class WindowFinder { public: WindowFinder(); static WindowData getFrontmostWindowProcess(); static void sendInputToFrontmostWindow(const QKeySequence &keys, const KeyEventType &type); private: #ifdef Q_OS_WIN static WindowData getWin32FrontmostWindowProcess(); // static bool getWin32IconData(HICON hIcon, int nColorBits, QByteArray &buffer); static void sendWin32InputToFrontmostWindow(const QKeySequence &keys, const KeyEventType &type); #endif // Q_OS_WIN }; #endif // WINDOWFINDER_H