private void HandleKeyUp(PipeMessageEx msg) { if (msg.wParam > MAX_KEYS) { Log.Error($"{nameof(KeyHandler)}.{nameof(HandleKeyUp)} wParam > MAX_KEYS (wParam: " + msg.wParam + ")"); return; } var pre = Keystate[msg.wParam]; Keystate[msg.wParam] = false; //if (pre != false) // Trace.WriteLine($"keyup: {msg.wParam} {msg.lParam} ({msg.lParam:x}) \"{Convert.ToString(msg.lParam, 2)}\""); if (pre != false) { AbortTimer(); foreach (var l in _onKeyChangeListeners) { l.Item2(msg.wParam, false); } } }
public void HandleMessage(PipeMessageEx msg) { if (msg.msg == signal.WMC_SETFOCUS) { if (msg.wParam > 0) { var hwnd = new IntPtr((long)msg.wParam); SignalAllListenersExcept(false, hwnd); SignalListeners(hwnd, true); } } else if (msg.msg == signal.WMC_ACTIVATEAPP) { // If the current hwnd is the one receiving focus if (msg.lParam != 0) { var hwnd = new IntPtr((long)msg.wParam); var node = windowTracker.GetNodes(hwnd); // And if we got a node handler for this window if (node != null) { SignalAllListenersExcept(false, hwnd); SignalListeners(hwnd, true); } } } }
private void HandleKeyDown(PipeMessageEx msg) { if (msg.wParam > MAX_KEYS) { Log.Warning("HandleKeyDown - wParam > MAX_KEYS (wParam: " + msg.wParam + ")"); //Trace.WriteLine("HandleKeyDown - wParam > MAX_KEYS (wParam: " + msg.wParam + ")"); return; } var pre = Keystate[msg.wParam]; Keystate[msg.wParam] = true; if (pre != true) { AbortTimer(); foreach (var l in _onKeyChangeListeners) { l.Item2(msg.wParam, true); } //var tmp = keyListener.Keystate.Select((keyVal, keyIndex) => new { key = keyVal, index = keyIndex }).Where(k => k.key).Select(k => k.index).ToList(); //Trace.WriteLine($"Keydown: {msg.wParam} {msg.lParam} ({msg.lParam:x}) \"{Convert.ToString(msg.lParam, 2)}\" Pressed keys: {string.Join(", ", tmp)}"); if (HandleKeyHits()) { StartTimer(); } } }
public void HandleMessage(PipeMessageEx msg) { if (msg.msg == signal.WMC_KEYDOWN) { HandleKeyDown(msg); } else if (msg.msg == signal.WMC_KEYUP) { HandleKeyUp(msg); } }
public void HandleMessage(PipeMessageEx msg) { if (msg.msg == signalHandler.WMC_SCMINIMIZE || msg.msg == signalHandler.WMC_SCMAXIMIZE) { var type = msg.msg == signalHandler.WMC_SCMAXIMIZE ? WindowStyleChangedType.Maximize : WindowStyleChangedType.Minimize; var hwnd = new IntPtr((long)msg.wParam); foreach (var l in _styleChangedListeners) { if (l.Value.Item1 == hwnd) { l.Value.Item2(new WindowStyleChangedArg(type, 0)); } } } else if (msg.msg == signalHandler.WMC_STYLECHANGED) { // NOTE, this messages lParam should be an pointer // to an STYLESTRUCT object... how to fix so we can // read this object in here??? var hwnd = new IntPtr((long)msg.wParam); var hit = false; foreach (var l in _styleChangedListeners) { if (l.Value.Item1 == hwnd) { hit = true; l.Value.Item2(new WindowStyleChangedArg(WindowStyleChangedType.Style, msg.lParam)); } } if (!hit) { UnknownWindow?.Invoke(this, Tuple.Create(hwnd, msg.lParam)); } } else if (msg.msg == signalHandler.WMC_DESTROY) { var hwnd = new IntPtr((long)msg.wParam); foreach (var l in _closeListeners) { if (l.Value.Item1 == hwnd) { l.Value.Item2(hwnd); } } } }
public void HandleMessage(PipeMessageEx msg) { if (msg.msg == signalHandler.WMC_ENTERMOVE) { RaiseOnDragStart(new DragStartEvent(msg)); } else if (msg.msg == signalHandler.WMC_MOVE) { RaiseOnDragMove(new DragMoveEvent(msg)); } else if (msg.msg == signalHandler.WMC_EXITMOVE) { RaiseOnDragEnd(new DragEndEvent(msg)); } }
public void When_DisplayChange_Then_CallScreenChanged() { // Arrange uint signalId = 666; (var screens, var screenList) = SetupScreens(1); (var collection, var desktops) = SetupDeskops(1); var sut = CreateSut(screens: screens, desktopCollection: collection, signal: out Mock <ISignalHandler> signal); var msg = new PipeMessageEx { msg = signalId }; signal.SetupGet(m => m.WMC_DISPLAYCHANGE).Returns(signalId); screenList[0].SetupGet(m => m.WorkingArea).Returns(new RECT(0, 0, 20, 20)); var expected = screens.Object.AllScreens.GetOrderRect().rect.ToArray(); // Act sut.HandleMessage(msg); // Assert desktops[0].Verify(m => m.ScreensChanged(expected, It.IsAny <Direction>())); }
public void When_DisplayChange_Then_SignalRestartThread() { // Arrange uint signalId = 666; (var screens, var screenList) = SetupScreens(1); (var collection, var desktops) = SetupDeskops(1); var sut = CreateSut(screens: screens, desktopCollection: collection, signal: out Mock <ISignalHandler> signal); var msg = new PipeMessageEx { msg = signalId }; var restartThreadsCalled = false; signal.SetupGet(m => m.WMC_DISPLAYCHANGE).Returns(signalId); screenList[0].SetupGet(m => m.WorkingArea).Returns(new RECT(0, 0, 20, 20)); Startup.ParserSignal.RestartThreads += (sender, args) => restartThreadsCalled = true; // Act sut.HandleMessage(msg); // Assert restartThreadsCalled.Should().BeTrue(); }
public DragEndEvent(PipeMessageEx msg) { hWnd = new IntPtr((long)msg.wParam); }
public DragMoveEvent(PipeMessageEx msg) { X = ToSignedDWord(msg.lParam); Y = ToSignedDWord(msg.lParam >> 16); hWnd = new IntPtr((long)msg.wParam); }