Skip to content

Commit 0a1e29e

Browse files
LightLight
authored andcommitted
Merge branch 'add_language_string' into master
# Conflicts: # SmartSystemMenu/EnumWindows.cs # SmartSystemMenu/Forms/MainForm.cs # SmartSystemMenu/Settings/SmartSystemMenuSettings.cs # SmartSystemMenu/SmartSystemMenu64.exe # SmartSystemMenu/SystemTrayMenu.cs
2 parents f32097a + ed209df commit 0a1e29e

29 files changed

+612
-169
lines changed

Build/Build.cmd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
call "%VS100COMNTOOLS%\vsvars32.bat"
1+
call "c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
22
"c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" Build.xml

Build/Build.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
<SmartSystemMenuDestFileWin64 Include="$(SmartSystemMenuProjectPath)\SmartSystemMenu64.exe" />
2222
<SmartSystemMenuConfigurationSourceFile Include="$(SmartSystemMenuProjectPath)\SmartSystemMenu.xml" />
2323
<SmartSystemMenuConfigurationDestFile Include="$(ApplicationPath)\SmartSystemMenu.xml" />
24+
<SmartSystemMenuLanguageSourceFile Include="$(SmartSystemMenuProjectPath)\Language.xml" />
25+
<SmartSystemMenuLanguageDestFile Include="$(ApplicationPath)\Language.xml" />
2426
<EmptyTextForFile Include="Empty File" />
2527
</ItemGroup>
2628

@@ -35,6 +37,7 @@
3537
<CallTarget Targets="Build_Release_x32_SmartSystemMenu" />
3638
<CallTarget Targets="Copy_Release_x32_SmartSystemMenu" />
3739
<CallTarget Targets="CopySmartSystemMenuConfigurationFile" />
40+
<CallTarget Targets="CopySmartSystemMenuLanguageFile" />
3841
</Target>
3942

4043
<Target Name="Build_Release_x32_SmartSystemMenuHook">
@@ -99,4 +102,9 @@
99102
<Message Text="Copy $(SmartSystemMenuConfigurationSourceFile) to $(SmartSystemMenuProjectName)" />
100103
<Copy SourceFiles="@(SmartSystemMenuConfigurationSourceFile)" DestinationFiles="@(SmartSystemMenuConfigurationDestFile)" />
101104
</Target>
105+
106+
<Target Name="CopySmartSystemMenuLanguageFile">
107+
<Message Text="Copy $(SmartSystemMenuLanguageSourceFile) to $(SmartSystemMenuProjectName)" />
108+
<Copy SourceFiles="@(SmartSystemMenuLanguageSourceFile)" DestinationFiles="@(SmartSystemMenuLanguageDestFile)" />
109+
</Target>
102110
</Project>

README_CN.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
![SmartSystemMenu](https://user-images.githubusercontent.com/8102586/68280906-8e86b800-0087-11ea-9762-f9eb028bb8fe.png) SmartSystemMenu
2+
=============
3+
4+
SmartSystemMenu 扩展了系统中所有窗口的系统菜单。 它会将下面的自定义项目追加到菜单:
5+
6+
* **信息.** 显示一个对话框,其中包含当前窗口和进程的信息:窗口句柄、窗口标题、窗口风格、窗口类、进程名称、进程ID、进程路径。
7+
* **卷起.** 允许将当前窗口向上卷起。
8+
* **毛玻璃效果.** 允许将 "毛玻璃效果" 模糊添加到当前窗口。(Windows Vista 及更高版本。主要用于控制台窗口。)
9+
* **始终在最前面.** 允许当前窗口位于所有其他窗口之上。
10+
* **移至最底层.** 允许将当前窗口发送到底部。
11+
* **保存窗口截图.** 允许将当前窗口的屏幕截图保存到文件中。
12+
* **在资源管理器中打开文件.** 允许在文件资源管理器中打开进程文件。
13+
* **将文本复制到剪贴板.** 允许复制所有窗口文本 (包括控制台、MS Office 产品等) 到剪贴板中。
14+
* **通过鼠标拖动.** 允许通过鼠标拖动当前窗口。
15+
* **调整窗口大小.** 允许更改当前窗口的大小。
16+
* **移动到.** 允许将当前窗口移动到另一个显示器。
17+
* **对齐.** 允许当前窗口与桌面上的9个位置中的任何一个对齐。
18+
* **透明度.** 允许更改当前窗口的透明度。
19+
* **优先级.** 允许更改当前窗口的程序优先级。
20+
* **系统托盘.** 允许将当前窗口最小化到系统托盘。
21+
* **其他窗口.** 允许关闭和最小化系统中除当前窗口之外的所有窗口。
22+
* **启动程序.** 允许启动设置中的程序。
23+
24+
截图
25+
------------------
26+
27+
![Resize](https://cdn.jsdelivr.net/gh/LightAPIs/PicGoImg@master/img/Resize.png)
28+
29+
![Trans](https://cdn.jsdelivr.net/gh/LightAPIs/PicGoImg@master/img/Trans.png)
30+
31+
要求
32+
--------------------
33+
34+
* OS Windows XP SP3 及更高版本。 支持 x86 和 x64 系统。
35+
* .NET Framework 4.0
36+
37+
程序文件
38+
--------------------
39+
40+
* SmartSystemMenu.exe
41+
* SmartSystemMenu64.exe (位于 SmartSystemMenu.exe 模块的资源中)
42+
* SmartSystemMenuHook.dll
43+
* SmartSystemMenuHook64.dll
44+
45+
此程序具有用于 x86 进程的 SmartSystemMenu.exe 和 SmartSystemMenuHook.dll 模块,用于 x64 进程的 SmartSystemMenu64.exe 和 SmartSystemMenuHook64.dll 模块。当您运行 SmartSystemMenu.exe 时,它还会运行 SmartSystemMenu64.exe。 这两个可执行模块将挂钩 (SmartSystemMenuHook.dll 和 SmartSystemMenuHook64.dll) 加载到所有进程。 当您在系统菜单中选择一项时,挂钩会向可执行模块发送一条消息。之后,模块执行选定的操作:更改窗口的透明度、更改窗口的大小等等。
46+
47+
局限性
48+
--------------------
49+
50+
此工具无法在系统菜单由其自己的进程管理的窗口上正常工作,例如 IE9 及更高版本、Chrome 29 及更高版本等。此外,该工具不能与 Delphi 进程的窗口一起正常工作,因为 Delphi 窗口有一个父 TApplication 窗口。
51+
52+
提示
53+
--------------------
54+
55+
运行 SmartSystemMenu.exe 进程。如果您的操作系统启用了 UAC,系统将显示 UAC 对话框。您不必担心,因为程序需要提升权限。程序执行后,在所有窗口的所有系统菜单中都可以看到自定义项目。
56+
57+
## 中文版本使用方法
58+
59+
运行 SmartSystemMenu.exe 时,会自动检测系统语言环境,若为简体中文或繁体中文,自动应用简体中文语言。
60+

SmartSystemMenu/EnumWindows.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,32 @@ static class EnumWindows
1212
private static IntPtr[] _filterHandles;
1313
private static IList<Window> _windows;
1414
private static MenuItems _menuItems;
15+
private static MenuLanguage _menuLanguage;
1516

16-
public static IList<Window> EnumAllWindows(MenuItems menuItems, params string[] filterTitles)
17+
public static IList<Window> EnumAllWindows(MenuItems menuItems, MenuLanguage MenuLanguage, params string[] filterTitles)
1718
{
1819
_filterTitles = filterTitles ?? new string[0];
1920
_filterHandles = new IntPtr[0];
2021
_windows = new List<Window>();
2122
_menuItems = menuItems;
23+
_menuLanguage = MenuLanguage;
2224
NativeMethods.EnumWindows(EnumWindowCallback, 0);
2325
return _windows;
2426
}
2527

26-
public static IList<Window> EnumProcessWindows(int processId, IntPtr[] filterHandles, MenuItems menuItems, params string[] filterTitles)
28+
public static IList<Window> EnumProcessWindows(int processId, IntPtr[] filterHandles, MenuItems menuItems, MenuLanguage menuLanguage, params string[] filterTitles)
2729
{
2830
_filterTitles = filterTitles ?? new string[0];
2931
_filterHandles = filterHandles ?? new IntPtr[0];
3032
_windows = new List<Window>();
3133
_menuItems = menuItems;
34+
<<<<<<< HEAD
3235
var process = SystemUtils.GetProcessByIdSafely(processId);
3336
if (process != null)
37+
=======
38+
_menuLanguage = menuLanguage;
39+
foreach (ProcessThread thread in Process.GetProcessById(processId).Threads)
40+
>>>>>>> add_language_string
3441
{
3542
foreach (ProcessThread thread in process.Threads)
3643
{
@@ -57,7 +64,7 @@ private static bool EnumWindowCallback(IntPtr hwnd, int lParam)
5764

5865
if (!isAdd) return true;
5966

60-
var window = new Window(hwnd, _menuItems);
67+
var window = new Window(hwnd, _menuItems, _menuLanguage);
6168

6269
if (!window.Menu.Exists)
6370
{

SmartSystemMenu/Forms/AboutForm.Designer.cs

Lines changed: 6 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

SmartSystemMenu/Forms/AboutForm.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
using System;
22
using System.Windows.Forms;
3+
using SmartSystemMenu.Settings;
34

45
namespace SmartSystemMenu.Forms
56
{
67
partial class AboutForm : Form
78
{
89
private const string URL = "https://github.com/AlexanderPro/SmartSystemMenu";
910

10-
public AboutForm()
11+
public AboutForm(MenuLanguage menuLanguage)
1112
{
12-
InitializeComponent();
13-
Text = "About " + AssemblyUtils.AssemblyProductName;
13+
InitializeComponent(menuLanguage);
14+
Text = menuLanguage.GetStringValue("about_form") + AssemblyUtils.AssemblyProductName;
1415
lblProductName.Text = string.Format("{0} v{1}", AssemblyUtils.AssemblyProductName, AssemblyUtils.AssemblyProductVersion);
1516
lblCopyright.Text = string.Format("{0}-{1} {2}", AssemblyUtils.AssemblyCopyright, DateTime.Now.Year, AssemblyUtils.AssemblyCompany);
1617
linkUrl.Text = URL;

SmartSystemMenu/Forms/InfoForm.Designer.cs

Lines changed: 17 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

SmartSystemMenu/Forms/InfoForm.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
using System.Windows.Forms;
22
using System.Diagnostics;
33
using System.IO;
4+
using SmartSystemMenu.Settings;
45

56
namespace SmartSystemMenu.Forms
67
{
78
partial class InfoForm : Form
89
{
910
private Window _window;
1011

11-
public InfoForm(Window window)
12+
public InfoForm(Window window, MenuLanguage menuLanguage)
1213
{
1314
_window = window;
14-
InitializeComponent();
15+
InitializeComponent(menuLanguage);
1516
InitializeControls();
1617
}
1718

0 commit comments

Comments
 (0)