public NetworkedHooker(ViewModel model) { Model = model; Hooker = new Hooker(); if (!HookEvents.IsAlreadyRegistered()) { HookEvents.RegisterItself(); } Model.PropertyChanged += (a, b) => { if (b.PropertyName == ViewModel.CaptureScreenShotsProperty) { if (Model.CaptureScreenShots == true) { EnableRecorder(); } else { Recorder?.Dispose(); Recorder = null; } } }; if (Model.CaptureScreenShots) // default is to enable it { EnableRecorder(); } Hooker.OnKeyDown += Hooker_OnKeyDown; Hooker.OnMouseButton += Hooker_OnMouseButton; Hooker.OnMouseMove += Hooker_OnMouseMove; Hooker.OnMouseWheel += Hooker_OnMouseWheel; }
/// <summary> /// All button presses are routed via comamnds here which do execute one of these commands /// </summary> /// <returns></returns> private Dictionary <string, ICommand> CreateUICommands() { Dictionary <string, ICommand> commands = new Dictionary <string, ICommand> { { "LogSlow", CreateCommand(_ => Hooker.LogSlowEvent()) }, { "LogFast", CreateCommand(_ => Hooker.LogFastEvent()) }, { "Config", CreateCommand(_ => ShowConfigDialog()) }, { "TraceRefresh", CreateCommand(_ => { TraceSessions = LocalTraceControler.GetTraceSessions(); WCFHost.GetTraceSessions.Execute(); }) }, { "StartTracing", CreateCommand(_ => StartTracing()) }, { "StopTracing", CreateCommand(_ => StopTracing()) }, { "CancelTracing", CreateCommand(_ => CancelTracing()) }, { "RegisterETWProvider", CreateCommand(_ => { string output = HookEvents.RegisterItself(); SetStatusMessage("Registering ETW provider: " + output); }) }, { "ConfigReset", CreateCommand(_ => { Configuration.Default.Reset(); Configuration.Default.Save(); LoadSettings(); }) }, { "ShowMessages", CreateCommand(_ => ShowMessages()) }, { "NetworkSendToggle", CreateCommand(_ => NetworkSendState.NetworkSendChangeState()) }, { "NetworkReceiveToggle", CreateCommand(_ => NetworkReceiveState.NetworkReceiveChangeState()) }, { "ClearStatusMessages", CreateCommand(_ => StatusMessages.Clear()) }, { "ShowCommandLineOptions", CreateCommand(_ => ShowCommandLineOptions()) }, { "About", CreateCommand(_ => AboutBox()) }, }; return(commands); }