Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
MSWindowsClipboard.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
4 * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
5 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
6 */
7
8#pragma once
9
10#include "deskflow/IClipboard.h"
12
13#include <vector>
14
15#define WIN32_LEAN_AND_MEAN
16#include <Windows.h>
17
20
23{
24public:
25 MSWindowsClipboard(HWND window);
27 ~MSWindowsClipboard() override;
28
30
42 bool emptyUnowned();
43
45 static bool isOwnedByDeskflow();
46
47 // IClipboard overrides
48 bool empty() override;
49 void add(EFormat, const std::string &data) override;
50 bool open(Time) const override;
51 void close() const override;
52 Time getTime() const override;
53 bool has(EFormat) const override;
54 std::string get(EFormat) const override;
55
57
58private:
59 void clearConverters();
60
61 UINT convertFormatToWin32(EFormat) const;
62 HANDLE convertTextToWin32(const std::string &data) const;
63 std::string convertTextFromWin32(HANDLE) const;
64
65 static UINT getOwnershipFormat();
66
67private:
68 using ConverterList = std::vector<IMSWindowsClipboardConverter *>;
69
70 HWND m_window;
71 mutable Time m_time;
72 ConverterList m_converters;
73 static UINT s_ownershipFormat;
75 bool m_deleteFacade;
76};
77
79
84{
85public:
86 // accessors
87
88 // return the clipboard format this object converts from/to
89 virtual IClipboard::EFormat getFormat() const = 0;
90
91 // return the atom representing the win32 clipboard format that
92 // this object converts from/to
93 virtual UINT getWin32Format() const = 0;
94
95 // convert from the IClipboard format to the win32 clipboard format.
96 // the input data must be in the IClipboard format returned by
97 // getFormat(). the return data will be in the win32 clipboard
98 // format returned by getWin32Format(), allocated by GlobalAlloc().
99 virtual HANDLE fromIClipboard(const std::string &) const = 0;
100
101 // convert from the win32 clipboard format to the IClipboard format
102 // (i.e., the reverse of fromIClipboard()).
103 virtual std::string toIClipboard(HANDLE data) const = 0;
104};
static int void FAR * data
Definition ArchNetworkWinsock.cpp:34
Clipboard interface.
Definition IClipboard.h:20
EFormat
Clipboard formats.
Definition IClipboard.h:50
uint32_t Time
Timestamp type.
Definition IClipboard.h:28
Base class of interfaces.
Definition IInterface.h:18
Clipboard format converter interface.
Definition MSWindowsClipboard.h:84
virtual std::string toIClipboard(HANDLE data) const =0
virtual IClipboard::EFormat getFormat() const =0
virtual UINT getWin32Format() const =0
virtual HANDLE fromIClipboard(const std::string &) const =0
Definition IMSWindowsClipboardFacade.h:18
MSWindowsClipboard(HWND window)
Definition MSWindowsClipboard.cpp:24
bool emptyUnowned()
Empty clipboard without ownership.
Definition MSWindowsClipboard.cpp:54
bool empty() override
Empty clipboard.
Definition MSWindowsClipboard.cpp:69
bool has(EFormat) const override
Check for data.
Definition MSWindowsClipboard.cpp:142
void add(EFormat, const std::string &data) override
Add data.
Definition MSWindowsClipboard.cpp:86
bool open(Time) const override
Open clipboard.
Definition MSWindowsClipboard.cpp:117
MSWindowsClipboard(HWND window, IMSWindowsClipboardFacade &facade)
std::string get(EFormat) const override
Get data.
Definition MSWindowsClipboard.cpp:155
~MSWindowsClipboard() override
Definition MSWindowsClipboard.cpp:36
Time getTime() const override
Get time.
Definition MSWindowsClipboard.cpp:137
void setFacade(IMSWindowsClipboardFacade &facade)
Definition MSWindowsClipboard.cpp:47
static bool isOwnedByDeskflow()
Test if clipboard is owned by deskflow.
Definition MSWindowsClipboard.cpp:195
void close() const override
Close clipboard.
Definition MSWindowsClipboard.cpp:131