public void ChangeActiveProcess(IntPtr hWinEventHook, uint eventType, IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime) { Process pr = ChangingProcess.GetActiveProcess(); if (FirstTime) { StartTime = DateTime.Now; CurrentProgram = GetObservedProgramFromProcess(pr); FirstTime = false; dT = new DispatcherTimer(new TimeSpan(0, 0, 0, 0, 50), DispatcherPriority.Background, t_Tick, Dispatcher.CurrentDispatcher); dT.IsEnabled = true; } else { PreviousProgram = CurrentProgram; TimeSpan ts = DateTime.Now - StartTime; PreviousProgram.AddTimeDuration(DateTime.Now - StartTime); ProgramsDataGrid.Items.Refresh(); StartTime = DateTime.Now; CurrentProgram = CurrentProgram = GetObservedProgramFromProcess(pr); } liveIcon.Source = CurrentProgram.IconSource; liveName.Text = CurrentProgram.Name; }
public MainWindow() { InitializeComponent(); ProgramsDataGrid = DataGridXAML; del = ChangeActiveProcess; eventH = ChangingProcess.SetWinEventHook(ChangingProcess.EVENT_SYSTEM_FOREGROUND, ChangingProcess.EVENT_SYSTEM_FOREGROUND, (IntPtr)0, del, 0, 0, ChangingProcess.WINEVENT_OUTOFCONTEXT | ChangingProcess.WINEVENT_SKIPOWNPROCESS); }