Skip to content

Commit ba18750

Browse files
committed
添加各插件设置
1 parent eec9d05 commit ba18750

17 files changed

+271
-52
lines changed

CDConfig/CDConfigDlg.cpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,17 @@ void CCDConfigDlg::OnBnClickedButton1()
155155

156156
SHELLEXECUTEINFO info = {};
157157
info.cbSize = sizeof(info);
158-
info.fMask = SEE_MASK_NOASYNC;
158+
info.fMask = SEE_MASK_NOCLOSEPROCESS;
159159
info.lpVerb = _T("open");
160160
info.lpFile = _T("Inject.exe");
161161
info.nShow = SW_SHOWNORMAL;
162+
162163
ShellExecuteEx(&info);
164+
WaitForSingleObject(info.hProcess, INFINITE);
165+
CloseHandle(info.hProcess);
163166
ShellExecuteEx(&info);
167+
WaitForSingleObject(info.hProcess, INFINITE);
168+
CloseHandle(info.hProcess);
164169
}
165170

166171
void CCDConfigDlg::OnOK()

Plugin/DesktopBrowser/DesktopBrowser.cpp

+42-1
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@
44
#include <CDAPI.h>
55
#include "Config.h"
66
#include <CommCtrl.h>
7+
#include <thread>
8+
#include <shellapi.h>
79

810

911
DesktopBrowser::DesktopBrowser(HMODULE hModule) :
10-
m_module(hModule)
12+
m_module(hModule),
13+
m_menuID(cd::GetMenuID())
1114
{
1215
cd::g_fileListWndProcEvent.AddListener(std::bind(&DesktopBrowser::OnFileListWndProc, this, std::placeholders::_1,
1316
std::placeholders::_2, std::placeholders::_3, std::placeholders::_4), m_module);
@@ -22,6 +25,8 @@ DesktopBrowser::DesktopBrowser(HMODULE hModule) :
2225
cd::g_preDrawBackgroundEvent.AddListener([](HDC&){ return false; }, m_module);
2326
cd::g_desktopCoveredEvent.AddListener([this]{ m_pauseFlag = true; return true; }, m_module);
2427
cd::g_desktopUncoveredEvent.AddListener([this]{ m_pauseFlag = false; return true; }, m_module);
28+
cd::g_appendTrayMenuEvent.AddListener(std::bind(&DesktopBrowser::OnAppendTrayMenu, this, std::placeholders::_1), m_module);
29+
cd::g_chooseMenuItemEvent.AddListener(std::bind(&DesktopBrowser::OnChooseMenuItem, this, std::placeholders::_1), m_module);
2530

2631
cd::ExecInMainThread([this]{
2732
SIZE size;
@@ -88,3 +93,39 @@ bool DesktopBrowser::OnPostDrawBackground(HDC& hdc)
8893
m_browser->Draw(hdc, rect);
8994
return true;
9095
}
96+
97+
98+
bool DesktopBrowser::OnAppendTrayMenu(HMENU menu)
99+
{
100+
AppendMenu(menu, MF_STRING, m_menuID, APPNAME);
101+
return true;
102+
}
103+
104+
bool DesktopBrowser::OnChooseMenuItem(UINT menuID)
105+
{
106+
if (menuID != m_menuID)
107+
return true;
108+
109+
std::thread([this]{
110+
SHELLEXECUTEINFOW info = {};
111+
info.cbSize = sizeof(info);
112+
info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_NOASYNC;
113+
info.lpVerb = L"open";
114+
info.lpFile = L"notepad.exe";
115+
std::wstring param = cd::GetPluginDir() + L"\\Data\\DesktopBrowser.ini";
116+
info.lpParameters = param.c_str();
117+
info.nShow = SW_SHOWNORMAL;
118+
ShellExecuteExW(&info);
119+
120+
WaitForSingleObject(info.hProcess, INFINITE);
121+
CloseHandle(info.hProcess);
122+
123+
cd::ExecInMainThread([this]{
124+
Config newConfig;
125+
if (newConfig.m_homePage != g_config.m_homePage && m_browser != nullptr)
126+
m_browser->Navigate(newConfig.m_homePage.c_str());
127+
g_config = newConfig;
128+
});
129+
}).detach();
130+
return false;
131+
}

Plugin/DesktopBrowser/DesktopBrowser.h

+5
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ class DesktopBrowser final
1818
bool m_runThreadFlag = true;
1919
bool m_pauseFlag = false;
2020

21+
const UINT m_menuID;
22+
2123

2224
bool OnFileListWndProc(UINT message, WPARAM wParam, LPARAM lParam, LRESULT& res);
2325
bool OnPostDrawBackground(HDC& hdc);
26+
27+
bool OnAppendTrayMenu(HMENU menu);
28+
bool OnChooseMenuItem(UINT menuID);
2429
};

Plugin/MaskDesktop/MDConfig.cpp Plugin/MaskDesktop/Config.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
#include "stdafx.h"
2-
#include "MDConfig.h"
2+
#include "Config.h"
33
#include <CDAPI.h>
44

55

6-
MDConfig g_config;
6+
Config g_config;
77

88

9-
MDConfig::MDConfig()
9+
Config::Config()
1010
{
1111
LoadConfig((cd::GetPluginDir() + L"\\Data\\MaskDesktop.ini").c_str());
1212
}
1313

14-
void MDConfig::LoadConfig(LPCWSTR path)
14+
void Config::LoadConfig(LPCWSTR path)
1515
{
1616
m_imagePath = cd::GetPluginDir() + L"\\Data\\Mask.png";
1717
m_size = GetPrivateProfileIntW(APPNAME, L"Size", m_size, path);

Plugin/MaskDesktop/MDConfig.h Plugin/MaskDesktop/Config.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
static const TCHAR APPNAME[] = _T("MaskDesktop");
66

7-
class MDConfig final
7+
class Config final
88
{
99
public:
1010
std::wstring m_imagePath;
1111
int m_size = 100;
1212

1313

14-
MDConfig();
14+
Config();
1515
void LoadConfig(LPCWSTR path);
1616
};
1717

18-
extern MDConfig g_config;
18+
extern Config g_config;

Plugin/MaskDesktop/MaskDesktop.cpp

+57-8
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,39 @@
22
#include "MaskDesktop.h"
33
#include <CDEvents.h>
44
#include <CDAPI.h>
5-
#include "MDConfig.h"
5+
#include "Config.h"
6+
#include <thread>
7+
#include <shellapi.h>
68

79

810
MaskDesktop::MaskDesktop(HMODULE hModule) :
9-
m_module(hModule)
11+
m_module(hModule),
12+
m_menuID(cd::GetMenuID())
1013
{
1114
// 载入图片
12-
CImage img;
13-
img.Load(g_config.m_imagePath.c_str());
14-
m_img.Create(g_config.m_size, g_config.m_size, 32, CImage::createAlphaChannel);
15-
img.Draw(m_img.GetDC(), -5, -5, g_config.m_size + 10, g_config.m_size + 10);
16-
m_img.ReleaseDC();
15+
InitImg();
1716

1817
// 监听事件
1918
cd::g_fileListWndProcEvent.AddListener(std::bind(&MaskDesktop::OnFileListWndProc, this, std::placeholders::_1,
2019
std::placeholders::_2, std::placeholders::_3, std::placeholders::_4), m_module);
2120
cd::g_postDrawIconEvent.AddListener(std::bind(&MaskDesktop::OnPostDrawIcon, this, std::placeholders::_1), m_module);
21+
cd::g_appendTrayMenuEvent.AddListener(std::bind(&MaskDesktop::OnAppendTrayMenu, this, std::placeholders::_1), m_module);
22+
cd::g_chooseMenuItemEvent.AddListener(std::bind(&MaskDesktop::OnChooseMenuItem, this, std::placeholders::_1), m_module);
2223

2324
cd::RedrawDesktop();
2425
}
2526

27+
void MaskDesktop::InitImg()
28+
{
29+
CImage img;
30+
img.Load(g_config.m_imagePath.c_str());
31+
if (!m_img.IsNull())
32+
m_img.Destroy();
33+
m_img.Create(g_config.m_size, g_config.m_size, 32, CImage::createAlphaChannel);
34+
img.Draw(m_img.GetDC(), -5, -5, g_config.m_size + 10, g_config.m_size + 10);
35+
m_img.ReleaseDC();
36+
}
37+
2638

2739
bool MaskDesktop::OnFileListWndProc(UINT message, WPARAM wParam, LPARAM lParam, LRESULT& res)
2840
{
@@ -79,4 +91,41 @@ bool MaskDesktop::OnPostDrawIcon(HDC& hdc)
7991
FillRect(hdc, &rect, brush);
8092

8193
return true;
82-
}
94+
}
95+
96+
97+
bool MaskDesktop::OnAppendTrayMenu(HMENU menu)
98+
{
99+
AppendMenu(menu, MF_STRING, m_menuID, APPNAME);
100+
return true;
101+
}
102+
103+
bool MaskDesktop::OnChooseMenuItem(UINT menuID)
104+
{
105+
if (menuID != m_menuID)
106+
return true;
107+
108+
std::thread([this]{
109+
SHELLEXECUTEINFOW info = {};
110+
info.cbSize = sizeof(info);
111+
info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_NOASYNC;
112+
info.lpVerb = L"open";
113+
info.lpFile = L"notepad.exe";
114+
std::wstring param = cd::GetPluginDir() + L"\\Data\\MaskDesktop.ini";
115+
info.lpParameters = param.c_str();
116+
info.nShow = SW_SHOWNORMAL;
117+
ShellExecuteExW(&info);
118+
119+
WaitForSingleObject(info.hProcess, INFINITE);
120+
CloseHandle(info.hProcess);
121+
122+
cd::ExecInMainThread([this]{
123+
Config newConfig;
124+
int oldSize = g_config.m_size;
125+
g_config = newConfig;
126+
if (newConfig.m_size != oldSize)
127+
InitImg();
128+
});
129+
}).detach();
130+
return false;
131+
}

Plugin/MaskDesktop/MaskDesktop.h

+7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,14 @@ class MaskDesktop final
1313
CImage m_img;
1414
POINTS m_curPos;
1515

16+
const UINT m_menuID;
17+
18+
19+
void InitImg();
1620

1721
bool OnFileListWndProc(UINT message, WPARAM wParam, LPARAM lParam, LRESULT& res);
1822
bool OnPostDrawIcon(HDC& hdc);
23+
24+
bool OnAppendTrayMenu(HMENU menu);
25+
bool OnChooseMenuItem(UINT menuID);
1926
};

Plugin/MaskDesktop/MaskDesktop.vcxproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@
147147
</Bscmake>
148148
</ItemDefinitionGroup>
149149
<ItemGroup>
150-
<ClInclude Include="MDConfig.h" />
150+
<ClInclude Include="Config.h" />
151151
<ClInclude Include="stdafx.h" />
152152
<ClInclude Include="targetver.h" />
153153
<ClInclude Include="MaskDesktop.h" />
@@ -167,7 +167,7 @@
167167
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
168168
</PrecompiledHeader>
169169
</ClCompile>
170-
<ClCompile Include="MDConfig.cpp" />
170+
<ClCompile Include="Config.cpp" />
171171
<ClCompile Include="stdafx.cpp">
172172
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
173173
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>

Plugin/MaskDesktop/MaskDesktop.vcxproj.filters

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<ClInclude Include="MaskDesktop.h">
2525
<Filter>头文件</Filter>
2626
</ClInclude>
27-
<ClInclude Include="MDConfig.h">
27+
<ClInclude Include="Config.h">
2828
<Filter>头文件</Filter>
2929
</ClInclude>
3030
</ItemGroup>
@@ -38,7 +38,7 @@
3838
<ClCompile Include="dllmain.cpp">
3939
<Filter>源文件</Filter>
4040
</ClCompile>
41-
<ClCompile Include="MDConfig.cpp">
41+
<ClCompile Include="Config.cpp">
4242
<Filter>源文件</Filter>
4343
</ClCompile>
4444
</ItemGroup>

Plugin/VideoDesktop/VDConfig.cpp Plugin/VideoDesktop/Config.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
#include "stdafx.h"
2-
#include "VDConfig.h"
2+
#include "Config.h"
33
#include <CDAPI.h>
44

55

6-
VDConfig g_config;
6+
Config g_config;
77

88

9-
VDConfig::VDConfig()
9+
Config::Config()
1010
{
1111
LoadConfig((cd::GetPluginDir() + L"\\Data\\VideoDesktop.ini").c_str());
1212
}
1313

14-
void VDConfig::LoadConfig(LPCWSTR path)
14+
void Config::LoadConfig(LPCWSTR path)
1515
{
1616
m_videoPath.resize(MAX_PATH);
1717
GetPrivateProfileStringW(APPNAME, L"VideoPath", L"", &m_videoPath.front(), static_cast<DWORD>(m_videoPath.size()), path);

Plugin/VideoDesktop/VDConfig.h Plugin/VideoDesktop/Config.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44

55
static const TCHAR APPNAME[] = _T("VideoDesktop");
66

7-
class VDConfig final
7+
class Config final
88
{
99
public:
1010
std::wstring m_videoPath;
1111
int m_volume = 100;
1212

1313

14-
VDConfig();
14+
Config();
1515
void LoadConfig(LPCWSTR path);
1616
};
1717

18-
extern VDConfig g_config;
18+
extern Config g_config;

0 commit comments

Comments
 (0)