Skip to content

Commit 69cb937

Browse files
committed
Replaced a list with a dictionary to store information about windows
1 parent 47e1073 commit 69cb937

File tree

1 file changed

+23
-23
lines changed

1 file changed

+23
-23
lines changed

SmartSystemMenu/Forms/MainForm.cs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ namespace SmartSystemMenu.Forms
2222
partial class MainForm : Form
2323
{
2424
private const string SHELL_WINDOW_NAME = "Program Manager";
25-
private List<Window> _windows;
25+
private Dictionary<IntPtr, Window> _windows;
2626
private CallWndProcHook _callWndProcHook;
2727
private GetMsgHook _getMsgHook;
2828
private ShellHook _shellHook;
@@ -121,9 +121,9 @@ protected override void OnLoad(EventArgs e)
121121
}
122122
}
123123

124-
_windows = EnumWindows.EnumAllWindows(_settings, _windowSettings, new string[] { SHELL_WINDOW_NAME }).ToList();
124+
_windows = EnumWindows.EnumAllWindows(_settings, _windowSettings, new string[] { SHELL_WINDOW_NAME }).ToDictionary(x => x.Handle, y => y);
125125

126-
foreach (var window in _windows)
126+
foreach (var window in _windows.Values)
127127
{
128128
var processPath = window.Process?.GetMainModuleFileName() ?? string.Empty;
129129
var fileName = Path.GetFileName(processPath);
@@ -219,7 +219,7 @@ protected override void OnClosed(EventArgs e)
219219

220220
if (_windows != null)
221221
{
222-
foreach (Window window in _windows)
222+
foreach (Window window in _windows.Values)
223223
{
224224
window.Dispose();
225225
}
@@ -340,7 +340,7 @@ private void MenuItemRestoreClick(object sender, EventArgs<long> e)
340340
{
341341
case MenuItemId.SC_HIDE:
342342
{
343-
foreach (var window in _windows)
343+
foreach (var window in _windows.Values)
344344
{
345345
if (window.IsHidden)
346346
{
@@ -352,7 +352,7 @@ private void MenuItemRestoreClick(object sender, EventArgs<long> e)
352352

353353
case MenuItemId.SC_TRANS_DEFAULT:
354354
{
355-
foreach (var window in _windows)
355+
foreach (var window in _windows.Values)
356356
{
357357
window.Menu.UncheckTransparencyMenu();
358358
window.Menu.CheckMenuItem(MenuItemId.SC_TRANS_DEFAULT, true);
@@ -363,7 +363,7 @@ private void MenuItemRestoreClick(object sender, EventArgs<long> e)
363363

364364
case MenuItemId.SC_CLICK_THROUGH:
365365
{
366-
foreach (var window in _windows)
366+
foreach (var window in _windows.Values)
367367
{
368368
if (window.IsClickThrough)
369369
{
@@ -398,7 +398,7 @@ private void MenuItemRestoreClick(object sender, EventArgs<long> e)
398398

399399
private void WindowCreated(object sender, WindowEventArgs e)
400400
{
401-
if (e.Handle != IntPtr.Zero && !_windows.Any(w => w.Handle == e.Handle))
401+
if (e.Handle != IntPtr.Zero && !_windows.ContainsKey(e.Handle))
402402
{
403403
GetWindowThreadProcessId(e.Handle, out int processId);
404404
var process = SystemUtils.GetProcessByIdSafely(processId);
@@ -429,7 +429,7 @@ private void InitMenu(object sender, SysCommandEventArgs e)
429429
return;
430430
}
431431

432-
var window = _windows.FirstOrDefault(w => w.Handle == e.WParam);
432+
var window = _windows.TryGetValue(e.WParam, out var win) ? win : null;
433433
if (window == null)
434434
{
435435
window = new Window(e.WParam, _settings.MenuItems, _settings.Language);
@@ -471,7 +471,7 @@ private void CreateMenu(Window window, int processId, string processPath)
471471
var fileName = Path.GetFileName(processPath);
472472
window.NoRestoreMenu = !string.IsNullOrEmpty(fileName) && _settings.NoRestoreMenuProcessNames.Contains(fileName.ToLower());
473473

474-
_windows.Add(window);
474+
_windows.Add(window.Handle, window);
475475

476476
var windowClassName = window.GetClassName();
477477
var isConsoleClassName = string.Compare(windowClassName, Window.ConsoleClassName, StringComparison.CurrentCulture) == 0;
@@ -487,8 +487,8 @@ private void CreateMenu(Window window, int processId, string processPath)
487487

488488
private void WindowDestroyed(object sender, WindowEventArgs e)
489489
{
490-
var window = _windows.FirstOrDefault(w => w.Handle == e.Handle && !w.IsHidden);
491-
if (window != null)
490+
var window = _windows.TryGetValue(e.Handle, out var win) ? win : null;
491+
if (window != null && !window.IsHidden)
492492
{
493493
if (window.Handle == _dimHandle)
494494
{
@@ -498,14 +498,14 @@ private void WindowDestroyed(object sender, WindowEventArgs e)
498498
if (!window.ExistSystemTrayIcon)
499499
{
500500
window.Dispose();
501-
_windows.Remove(window);
501+
_windows.Remove(window.Handle);
502502
}
503503
}
504504
}
505505

506506
private void WindowMinMax(object sender, SysCommandEventArgs e)
507507
{
508-
var window = _windows.FirstOrDefault(w => w.Handle == e.WParam);
508+
var window = _windows.TryGetValue(e.WParam, out var win) ? win : null;
509509
if (window != null)
510510
{
511511
if (e.LParam.ToInt64() == SW_MAXIMIZE)
@@ -533,7 +533,7 @@ private void WindowMinMax(object sender, SysCommandEventArgs e)
533533

534534
private void WindowMoveSize(object sender, WindowEventArgs e)
535535
{
536-
var window = _windows.FirstOrDefault(w => w.Handle == e.Handle);
536+
var window = _windows.TryGetValue(e.Handle, out var win) ? win : null;
537537
window?.SaveDefaultSizePosition();
538538
}
539539

@@ -548,8 +548,8 @@ private void WindowKeyboardEvent(object sender, BasicHookEventArgs e)
548548
var shiftKey = Convert.ToBoolean(shiftState);
549549
if (controlKey && shiftKey)
550550
{
551-
IntPtr handle = GetForegroundWindow();
552-
Window window = _windows.FirstOrDefault(w => w.Handle == handle);
551+
var handle = GetForegroundWindow();
552+
var window = _windows.TryGetValue(handle, out var win) ? win : null;
553553
window?.MinimizeToSystemTray();
554554
}
555555
}
@@ -568,7 +568,7 @@ private void SysCommand(object sender, SysCommandEventArgs e)
568568
var message = e.Message.ToInt64();
569569
if (message == WM_SYSCOMMAND)
570570
{
571-
var window = _windows.FirstOrDefault(w => w.Handle == e.Handle);
571+
var window = _windows.TryGetValue(e.Handle, out var win) ? win : null;
572572
if (window != null)
573573
{
574574
var lowOrder = e.WParam.ToInt64() & 0x0000FFFF;
@@ -1257,17 +1257,17 @@ private void ShowDimWindows()
12571257
Left = screen.Bounds.Left,
12581258
Top = screen.Bounds.Top
12591259
};
1260-
dimForm.Click += DimForm_Click;
1261-
dimForm.DoubleClick += DimForm_Click;
1262-
dimForm.MouseClick += DimForm_Click;
1263-
dimForm.MouseDoubleClick += DimForm_Click;
1260+
dimForm.Click += DimFormClick;
1261+
dimForm.DoubleClick += DimFormClick;
1262+
dimForm.MouseClick += DimFormClick;
1263+
dimForm.MouseDoubleClick += DimFormClick;
12641264
dimForm.Show();
12651265
_dimForms.Add(dimForm);
12661266
}
12671267
}
12681268
}
12691269

1270-
private void DimForm_Click(object sender, EventArgs e)
1270+
private void DimFormClick(object sender, EventArgs e)
12711271
{
12721272
if (_dimHandle != IntPtr.Zero)
12731273
{

0 commit comments

Comments
 (0)