Loading Program.cs +2 −0 Original line number Diff line number Diff line Loading @@ -2,7 +2,9 @@ class Program { private static async Task Main() { GamepadReader reader = new JoyConRead(); SlideSwitcher switcher = new(reader); await reader.Read(); switcher.Dispose(); } } } No newline at end of file SlideSwitcher.cs 0 → 100644 +26 −0 Original line number Diff line number Diff line namespace SwitchSlidePresenter; public class SlideSwitcher : IDisposable { private readonly GamepadReader _reader; public SlideSwitcher(GamepadReader reader) { _reader = reader; _reader.NextSlide += NextSlide; _reader.PrevSlide += PreviousSlide; } public void Dispose() { _reader.NextSlide -= NextSlide; _reader.PrevSlide -= PreviousSlide; } private void NextSlide() { IntPtr handle = Win32Api.GetForegroundWindow(); Win32Api.PostMessage(handle, Win32Api.WM_KEYDOWN, Win32Api.VK_NEXT, 0); } private void PreviousSlide() { IntPtr handle = Win32Api.GetForegroundWindow(); Win32Api.PostMessage(handle, Win32Api.WM_KEYDOWN, Win32Api.VK_PRIOR, 0); } } No newline at end of file Win32Api.cs 0 → 100644 +14 −0 Original line number Diff line number Diff line using System.Runtime.InteropServices; namespace SwitchSlidePresenter; public static class Win32Api { public const UInt32 WM_KEYDOWN = 0x0100; public const int VK_NEXT = 0x22; public const int VK_PRIOR = 0x21; [DllImport("user32.dll")] public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam); [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); } No newline at end of file Loading
Program.cs +2 −0 Original line number Diff line number Diff line Loading @@ -2,7 +2,9 @@ class Program { private static async Task Main() { GamepadReader reader = new JoyConRead(); SlideSwitcher switcher = new(reader); await reader.Read(); switcher.Dispose(); } } } No newline at end of file
SlideSwitcher.cs 0 → 100644 +26 −0 Original line number Diff line number Diff line namespace SwitchSlidePresenter; public class SlideSwitcher : IDisposable { private readonly GamepadReader _reader; public SlideSwitcher(GamepadReader reader) { _reader = reader; _reader.NextSlide += NextSlide; _reader.PrevSlide += PreviousSlide; } public void Dispose() { _reader.NextSlide -= NextSlide; _reader.PrevSlide -= PreviousSlide; } private void NextSlide() { IntPtr handle = Win32Api.GetForegroundWindow(); Win32Api.PostMessage(handle, Win32Api.WM_KEYDOWN, Win32Api.VK_NEXT, 0); } private void PreviousSlide() { IntPtr handle = Win32Api.GetForegroundWindow(); Win32Api.PostMessage(handle, Win32Api.WM_KEYDOWN, Win32Api.VK_PRIOR, 0); } } No newline at end of file
Win32Api.cs 0 → 100644 +14 −0 Original line number Diff line number Diff line using System.Runtime.InteropServices; namespace SwitchSlidePresenter; public static class Win32Api { public const UInt32 WM_KEYDOWN = 0x0100; public const int VK_NEXT = 0x22; public const int VK_PRIOR = 0x21; [DllImport("user32.dll")] public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam); [DllImport("user32.dll")] public static extern IntPtr GetForegroundWindow(); } No newline at end of file