Skip to content
This repository was archived by the owner on Apr 21, 2021. It is now read-only.

Commit 3a84c1c

Browse files
committed
remove debug lines
1 parent 3274471 commit 3a84c1c

File tree

2 files changed

+36
-40
lines changed

2 files changed

+36
-40
lines changed

EventHook/ApplicationWatcher.cs

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public class ApplicationWatcher
5353

5454
private AsyncCollection<object> appQueue;
5555

56-
private List<WindowData> activeWindows;
56+
private Dictionary<IntPtr, WindowData> activeWindows;
5757
private DateTime prevTimeApp;
5858

5959
public event EventHandler<ApplicationEventArgs> OnApplicationWindowChange;
@@ -74,7 +74,7 @@ public void Start()
7474
{
7575
if (!isRunning)
7676
{
77-
activeWindows = new List<WindowData> { };
77+
activeWindows = new Dictionary<IntPtr, WindowData>();
7878
prevTimeApp = DateTime.Now;
7979

8080
appQueue = new AsyncCollection<object>();
@@ -206,7 +206,7 @@ private async Task AppConsumer()
206206
private void WindowCreated(WindowData wnd)
207207
{
208208

209-
activeWindows.Add(wnd);
209+
activeWindows.Add(wnd.HWnd, wnd);
210210
ApplicationStatus(wnd, ApplicationEvents.Launched);
211211

212212
lastEventWasLaunched = true;
@@ -215,19 +215,19 @@ private void WindowCreated(WindowData wnd)
215215
}
216216

217217
/// <summary>
218-
/// invoke user call back
218+
/// Add window handle to active windows collection
219219
/// </summary>
220-
/// <param name="wnd"></param>
221-
/// <param name="appEvent"></param>
222-
private void ApplicationStatus(WindowData wnd, ApplicationEvents appEvent)
220+
private bool lastEventWasLaunched;
221+
private void WindowActivated(WindowData wnd)
223222
{
224-
var timeStamp = DateTime.Now;
225-
226-
wnd.AppTitle = appEvent == ApplicationEvents.Closed ? wnd.AppTitle : WindowHelper.GetWindowText(wnd.HWnd);
227-
wnd.AppPath = appEvent == ApplicationEvents.Closed ? wnd.AppPath : WindowHelper.GetAppPath(wnd.HWnd);
228-
wnd.AppName = appEvent == ApplicationEvents.Closed ? wnd.AppName : WindowHelper.GetAppDescription(wnd.AppPath);
229-
230-
OnApplicationWindowChange?.Invoke(null, new ApplicationEventArgs() { ApplicationData = wnd, Event = appEvent });
223+
if (activeWindows.ContainsKey(wnd.HWnd))
224+
{
225+
if (!lastEventWasLaunched && lastHwndLaunched != wnd.HWnd)
226+
{
227+
ApplicationStatus(activeWindows[wnd.HWnd], ApplicationEvents.Activated);
228+
}
229+
}
230+
lastEventWasLaunched = false;
231231
}
232232

233233
/// <summary>
@@ -236,26 +236,31 @@ private void ApplicationStatus(WindowData wnd, ApplicationEvents appEvent)
236236
/// <param name="wnd"></param>
237237
private void WindowDestroyed(WindowData wnd)
238238
{
239-
ApplicationStatus(activeWindows.FirstOrDefault(x => x.HWnd == wnd.HWnd) ?? wnd, ApplicationEvents.Closed);
240-
activeWindows.RemoveAll(x => x.HWnd == wnd.HWnd);
239+
if(activeWindows.ContainsKey(wnd.HWnd))
240+
{
241+
ApplicationStatus(activeWindows[wnd.HWnd], ApplicationEvents.Closed);
242+
activeWindows.Remove(wnd.HWnd);
243+
}
244+
241245
lastEventWasLaunched = false;
242246
}
243247

248+
249+
244250
/// <summary>
245-
/// Add window handle to active windows collection
251+
/// invoke user call back
246252
/// </summary>
247-
private bool lastEventWasLaunched;
248-
private void WindowActivated(WindowData wnd)
253+
/// <param name="wnd"></param>
254+
/// <param name="appEvent"></param>
255+
private void ApplicationStatus(WindowData wnd, ApplicationEvents appEvent)
249256
{
250-
if (activeWindows.Any(x => x.HWnd == wnd.HWnd))
251-
{
252-
if ((!lastEventWasLaunched) && lastHwndLaunched != wnd.HWnd)
253-
{
254-
ApplicationStatus(activeWindows.First(x => x.HWnd == wnd.HWnd), ApplicationEvents.Activated);
255-
}
256-
}
257-
lastEventWasLaunched = false;
258-
}
257+
var timeStamp = DateTime.Now;
258+
259+
wnd.AppTitle = appEvent == ApplicationEvents.Closed ? wnd.AppTitle : WindowHelper.GetWindowText(wnd.HWnd);
260+
wnd.AppPath = appEvent == ApplicationEvents.Closed ? wnd.AppPath : WindowHelper.GetAppPath(wnd.HWnd);
261+
wnd.AppName = appEvent == ApplicationEvents.Closed ? wnd.AppName : WindowHelper.GetAppDescription(wnd.AppPath);
259262

263+
OnApplicationWindowChange?.Invoke(null, new ApplicationEventArgs() { ApplicationData = wnd, Event = appEvent });
264+
}
260265
}
261266
}

EventHook/Hooks/ShellHook.cs

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,24 +66,15 @@ protected override void WndProc(ref Message m)
6666

6767
break;
6868
case ShellEvents.HSHELL_WINDOWDESTROYED:
69-
70-
if (WindowDestroyed != null)
71-
{
72-
WindowDestroyed(this, m.LParam);
73-
}
74-
69+
WindowDestroyed?.Invoke(this, m.LParam);
7570
break;
7671

77-
case ShellEvents.HSHELL_RUDEAPPACTIVATED:
7872
case ShellEvents.HSHELL_WINDOWACTIVATED:
79-
if (WindowActivated != null)
80-
{
81-
WindowActivated(this, m.LParam);
82-
}
73+
WindowActivated?.Invoke(this, m.LParam);
8374
break;
8475
}
8576
}
86-
Console.WriteLine((ShellEvents)m.WParam);
77+
8778
base.WndProc(ref m);
8879
}
8980

0 commit comments

Comments
 (0)