Deskflow 1.22.0.197
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
ArchMiscWindows.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 <string>
11
12#define WIN32_LEAN_AND_MEAN
13#include <Windows.h>
14
15#include <Tlhelp32.h>
16
17#include <functional>
18
21{
22public:
32 {
33 kIDLE = 0x0000,
34 kSYSTEM = 0x0001,
35 kDISPLAY = 0x0002
36 };
37
38 using RunFunc = std::function<int(void)>;
39
41 static void init();
42
44
47 static int runDaemon(RunFunc runFunc);
48
50
53 static void daemonRunning(bool running);
54
56
59 static void daemonFailed(int result);
60
62
65 static UINT getDaemonQuitMessage();
66
68 static HKEY openKey(HKEY parent, const TCHAR *child);
69
71 static HKEY openKey(HKEY parent, const TCHAR *const *keyPath);
72
74 static HKEY addKey(HKEY parent, const TCHAR *child);
75
77 static HKEY addKey(HKEY parent, const TCHAR *const *keyPath);
78
80 static void closeKey(HKEY);
81
83 static void deleteKey(HKEY parent, const TCHAR *name);
84
86 static EValueType typeOfValue(HKEY key, const TCHAR *name);
87
89 static void setValue(HKEY key, const TCHAR *name, const std::string &value);
90
92 static void setValue(HKEY key, const TCHAR *name, DWORD value);
93
95 static std::string readValueString(HKEY, const TCHAR *name);
96
98 static DWORD readValueInt(HKEY, const TCHAR *name);
99
101 static void addBusyState(DWORD busyModes);
102
104 static void removeBusyState(DWORD busyModes);
105
107 static void wakeupDisplay();
108
110 static bool wasLaunchedAsService();
111
113 static bool getParentProcessName(std::string &name);
114
116 static void guardRuntimeVersion();
117
119
122 static HINSTANCE instanceWin32();
123
125 static void setInstanceWin32(HINSTANCE instance);
126
128 static std::string getActiveDesktopName();
129
131 static bool isProcessElevated();
132
133private:
135 static HKEY openKey(HKEY parent, const TCHAR *child, bool create);
136
138 static HKEY openKey(HKEY parent, const TCHAR *const *keyPath, bool create);
139
141 static std::string readBinaryOrString(HKEY, const TCHAR *name, DWORD type);
142
144 static void setThreadExecutionState(DWORD);
145
147 static DWORD WINAPI dummySetThreadExecutionState(DWORD);
148
150 static BOOL WINAPI getProcessEntry(PROCESSENTRY32 &entry, DWORD processID);
151
153 static BOOL WINAPI getSelfProcessEntry(PROCESSENTRY32 &entry);
154
156 static BOOL WINAPI getParentProcessEntry(PROCESSENTRY32 &entry);
157
159
162 static HMODULE findLoadedModule(std::array<const char *, 2> moduleNames);
163
164private:
165 typedef DWORD(WINAPI *STES_t)(DWORD);
166
167 static DWORD s_busyState;
168 static STES_t s_stes; // STES: Set thread execution state
169 static HICON s_largeIcon;
170 static HICON s_smallIcon;
171 static HINSTANCE s_instanceWin32;
172};
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:27
static const WSAEVENT FAR DWORD
Definition ArchNetworkWinsock.cpp:54
static const WSAEVENT FAR BOOL
Definition ArchNetworkWinsock.cpp:54
static int type
Definition ArchNetworkWinsock.cpp:44
static int(PASCAL FAR *bind_winsock)(SOCKET s
int key
Definition KeySequence.cpp:15
Miscellaneous win32 functions.
Definition ArchMiscWindows.h:21
EBusyModes
Definition ArchMiscWindows.h:32
@ kDISPLAY
Definition ArchMiscWindows.h:35
@ kIDLE
Definition ArchMiscWindows.h:33
@ kSYSTEM
Definition ArchMiscWindows.h:34
static EValueType typeOfValue(HKEY key, const TCHAR *name)
Get type of value.
Definition ArchMiscWindows.cpp:157
static void init()
Initialize.
Definition ArchMiscWindows.cpp:61
static void addBusyState(DWORD busyModes)
Disable power saving.
Definition ArchMiscWindows.cpp:252
static void daemonFailed(int result)
Indicate failure of running daemon.
Definition ArchMiscWindows.cpp:77
static void wakeupDisplay()
Briefly interrupt power saving.
Definition ArchMiscWindows.cpp:300
static DWORD readValueInt(HKEY, const TCHAR *name)
Read a DWORD value from the registry.
Definition ArchMiscWindows.cpp:240
static void removeBusyState(DWORD busyModes)
Enable power saving.
Definition ArchMiscWindows.cpp:258
static void setValue(HKEY key, const TCHAR *name, const std::string &value)
Set a string value in the registry.
Definition ArchMiscWindows.cpp:179
static HINSTANCE instanceWin32()
Gets the window instance saved at program start.
Definition ArchMiscWindows.cpp:396
static void guardRuntimeVersion()
Prevent hard to troubleshoot errors, e.g. access violations.
Definition ArchMiscWindows.cpp:467
static UINT getDaemonQuitMessage()
Get daemon quit message.
Definition ArchMiscWindows.cpp:82
static void daemonRunning(bool running)
Indicate daemon is in main loop.
Definition ArchMiscWindows.cpp:72
std::function< int(void)> RunFunc
Definition ArchMiscWindows.h:38
static void deleteKey(HKEY parent, const TCHAR *name)
Delete a key (which should have no subkeys)
Definition ArchMiscWindows.cpp:148
static HKEY addKey(HKEY parent, const TCHAR *child)
Open/create and return a registry key, closing the parent key.
Definition ArchMiscWindows.cpp:97
static void closeKey(HKEY)
Close a key.
Definition ArchMiscWindows.cpp:140
static void setInstanceWin32(HINSTANCE instance)
Saves the window instance for later use.
Definition ArchMiscWindows.cpp:402
static std::string getActiveDesktopName()
Get the name of the active input desktop.
Definition ArchMiscWindows.cpp:408
static std::string readValueString(HKEY, const TCHAR *name)
Read a string value from the registry.
Definition ArchMiscWindows.cpp:234
static bool wasLaunchedAsService()
Returns true if this process was launched via NT service host.
Definition ArchMiscWindows.cpp:321
static HKEY openKey(HKEY parent, const TCHAR *child)
Open and return a registry key, closing the parent key.
Definition ArchMiscWindows.cpp:87
static bool getParentProcessName(std::string &name)
Returns true if we got the parent process name.
Definition ArchMiscWindows.cpp:332
static bool isProcessElevated()
Returns true if the process is running with elevated privileges (i.e. as admin).
Definition ArchMiscWindows.cpp:528
EValueType
Definition ArchMiscWindows.h:24
@ kSTRING
Definition ArchMiscWindows.h:28
@ kUNKNOWN
Definition ArchMiscWindows.h:25
@ kNO_VALUE
Definition ArchMiscWindows.h:26
@ kBINARY
Definition ArchMiscWindows.h:29
@ kUINT
Definition ArchMiscWindows.h:27
static int runDaemon(RunFunc runFunc)
Run the daemon.
Definition ArchMiscWindows.cpp:67