Deskflow 1.26.0.0
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) 2026 Deskflow Developers
4 * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
5 * SPDX-FileCopyrightText: (C) 2002 Chris Schoeneman
6 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
7 */
8
9#pragma once
10
11#include <string>
12
13#define WIN32_LEAN_AND_MEAN
14#include <Windows.h>
15
16#include <Tlhelp32.h>
17
18#include <functional>
19
22{
23public:
33 {
34 kIDLE = 0x0000,
35 kSYSTEM = 0x0001,
36 kDISPLAY = 0x0002
37 };
38
39 using RunFunc = std::function<int(void)>;
40
42 static void init();
43
45 static HKEY openKey(HKEY parent, const TCHAR *child);
46
48 static HKEY openKey(HKEY parent, const TCHAR *const *keyPath);
49
51 static HKEY addKey(HKEY parent, const TCHAR *child);
52
54 static HKEY addKey(HKEY parent, const TCHAR *const *keyPath);
55
57 static void closeKey(HKEY);
58
60 static void deleteKey(HKEY parent, const TCHAR *name);
61
63 static EValueType typeOfValue(HKEY key, const TCHAR *name);
64
66 static void setValue(HKEY key, const TCHAR *name, const std::string &value);
67
69 static void setValue(HKEY key, const TCHAR *name, DWORD value);
70
72 static std::wstring readValueString(HKEY, const TCHAR *name);
73
75 static DWORD readValueInt(HKEY, const TCHAR *name);
76
78 static void addBusyState(DWORD busyModes);
79
81 static void removeBusyState(DWORD busyModes);
82
84 static void wakeupDisplay();
85
87 static bool wasLaunchedAsService();
88
90 static bool getParentProcessName(std::wstring &name);
91
93 static void guardRuntimeVersion();
94
96
99 static HINSTANCE instanceWin32();
100
102 static void setInstanceWin32(HINSTANCE instance);
103
105 static std::wstring getActiveDesktopName();
106
108 static bool isProcessElevated();
109
110private:
112 static HKEY openKey(HKEY parent, const TCHAR *child, bool create);
113
115 static HKEY openKey(HKEY parent, const TCHAR *const *keyPath, bool create);
116
118 static std::wstring readBinaryOrString(HKEY, const TCHAR *name, DWORD type);
119
121 static void setThreadExecutionState(DWORD);
122
124 static DWORD WINAPI dummySetThreadExecutionState(DWORD);
125
127 static BOOL WINAPI getProcessEntry(PROCESSENTRY32 &entry, DWORD processID);
128
130 static BOOL WINAPI getSelfProcessEntry(PROCESSENTRY32 &entry);
131
133 static BOOL WINAPI getParentProcessEntry(PROCESSENTRY32 &entry);
134
136
139 static HMODULE findLoadedModule(std::array<const char *, 2> moduleNames);
140
141private:
142 typedef DWORD(WINAPI *STES_t)(DWORD);
143
144 static DWORD s_busyState;
145 static STES_t s_stes; // STES: Set thread execution state
146 static HICON s_largeIcon;
147 static HICON s_smallIcon;
148 static HINSTANCE s_instanceWin32;
149};
static const struct sockaddr FAR * name
Definition ArchNetworkWinsock.cpp:28
static const WSAEVENT FAR DWORD
Definition ArchNetworkWinsock.cpp:55
static const WSAEVENT FAR BOOL
Definition ArchNetworkWinsock.cpp:55
static int type
Definition ArchNetworkWinsock.cpp:45
static int(PASCAL FAR *bind_winsock)(SOCKET s
int key
Definition KeySequence.cpp:15
Miscellaneous win32 functions.
Definition ArchMiscWindows.h:22
EBusyModes
Definition ArchMiscWindows.h:33
@ kDISPLAY
Definition ArchMiscWindows.h:36
@ kIDLE
Definition ArchMiscWindows.h:34
@ kSYSTEM
Definition ArchMiscWindows.h:35
static std::wstring getActiveDesktopName()
Get the name of the active input desktop.
Definition ArchMiscWindows.cpp:385
static EValueType typeOfValue(HKEY key, const TCHAR *name)
Get type of value.
Definition ArchMiscWindows.cpp:138
static std::wstring readValueString(HKEY, const TCHAR *name)
Read a string value from the registry.
Definition ArchMiscWindows.cpp:211
static void init()
Initialize.
Definition ArchMiscWindows.cpp:62
static void addBusyState(DWORD busyModes)
Disable power saving.
Definition ArchMiscWindows.cpp:229
static void wakeupDisplay()
Briefly interrupt power saving.
Definition ArchMiscWindows.cpp:277
static DWORD readValueInt(HKEY, const TCHAR *name)
Read a DWORD value from the registry.
Definition ArchMiscWindows.cpp:217
static void removeBusyState(DWORD busyModes)
Enable power saving.
Definition ArchMiscWindows.cpp:235
static bool getParentProcessName(std::wstring &name)
Returns true if we got the parent process name.
Definition ArchMiscWindows.cpp:309
static void setValue(HKEY key, const TCHAR *name, const std::string &value)
Set a string value in the registry.
Definition ArchMiscWindows.cpp:160
static HINSTANCE instanceWin32()
Gets the window instance saved at program start.
Definition ArchMiscWindows.cpp:373
static void guardRuntimeVersion()
Prevent hard to troubleshoot errors, e.g. access violations.
Definition ArchMiscWindows.cpp:444
std::function< int(void)> RunFunc
Definition ArchMiscWindows.h:39
static void deleteKey(HKEY parent, const TCHAR *name)
Delete a key (which should have no subkeys).
Definition ArchMiscWindows.cpp:129
static HKEY addKey(HKEY parent, const TCHAR *child)
Open/create and return a registry key, closing the parent key.
Definition ArchMiscWindows.cpp:78
static void closeKey(HKEY)
Close a key.
Definition ArchMiscWindows.cpp:121
static void setInstanceWin32(HINSTANCE instance)
Saves the window instance for later use.
Definition ArchMiscWindows.cpp:379
static bool wasLaunchedAsService()
Returns true if this process was launched via NT service host.
Definition ArchMiscWindows.cpp:298
static HKEY openKey(HKEY parent, const TCHAR *child)
Open and return a registry key, closing the parent key.
Definition ArchMiscWindows.cpp:68
static bool isProcessElevated()
Returns true if the process is running with elevated privileges (i.e. as admin).
Definition ArchMiscWindows.cpp:505
EValueType
Definition ArchMiscWindows.h:25
@ kSTRING
Definition ArchMiscWindows.h:29
@ kUNKNOWN
Definition ArchMiscWindows.h:26
@ kNO_VALUE
Definition ArchMiscWindows.h:27
@ kBINARY
Definition ArchMiscWindows.h:30
@ kUINT
Definition ArchMiscWindows.h:28