private void InitSystem() { PathRandomizer.CopyFiles(); Remoting.Init(); this.InjectThread = new Thread( () => { var trigger = new EdgeTrigger(); trigger.Rising += (sender, args) => { Application.Current.Dispatcher.InvokeAsync( () => { this.icon_connected.Visibility = Visibility.Visible; this.icon_disconnected.Visibility = Visibility.Collapsed; }); }; trigger.Falling += (sender, args) => { Application.Current.Dispatcher.InvokeAsync( async() => { this.icon_connected.Visibility = Visibility.Collapsed; this.icon_disconnected.Visibility = Visibility.Visible; await this.UpdateAccount(); }); }; while (true) { try { Thread.Sleep(3000); if (Config.Instance.Install) { Injection.Pulse(); trigger.Value = Injection.IsInjected; Console.WriteLine(Injection.SharedMemory.Data.IsLoaded); } } catch { // ignored - A task was canceled. } } }); this.InjectThread.SetApartmentState(ApartmentState.STA); this.InjectThread.Start(); }
public static RuleTrigger Convert(WD_Trigger wdTrigger) { RuleTrigger trigger; switch (wdTrigger.Type) { case WD_TriggerType.Area: trigger = new AreaTrigger { Area = new Rectangle(wdTrigger.Values[0], wdTrigger.Values[1], wdTrigger.Values[2] - wdTrigger.Values[0], wdTrigger.Values[3] - wdTrigger.Values[1]), }; break; case WD_TriggerType.Edge: EdgePosition edgePosition; switch (wdTrigger.Position) { case WD_TriggerPosition.Left: edgePosition = EdgePosition.Left; break; case WD_TriggerPosition.Top: edgePosition = EdgePosition.Top; break; case WD_TriggerPosition.Right: edgePosition = EdgePosition.Right; break; case WD_TriggerPosition.Bottom: edgePosition = EdgePosition.Bottom; break; default: throw new NotSupportedException(); } trigger = new EdgeTrigger { Position = edgePosition, From = wdTrigger.Values[0], To = wdTrigger.Values[1], }; break; case WD_TriggerType.Corner: CornerPosition cornerPosition; switch (wdTrigger.Position) { case WD_TriggerPosition.TopLeft: cornerPosition = CornerPosition.TopLeft; break; case WD_TriggerPosition.TopRight: cornerPosition = CornerPosition.TopRight; break; case WD_TriggerPosition.BottomLeft: cornerPosition = CornerPosition.BottomLeft; break; case WD_TriggerPosition.BottomRight: cornerPosition = CornerPosition.BottomRight; break; default: throw new NotSupportedException(); } trigger = new CornerTrigger { Position = cornerPosition, }; break; default: throw new NotSupportedException(); } trigger.DisplayIndex = wdTrigger.Monitor + 1; return(trigger); }