- C#: Invoke Windows Magnifier
- private void ZoomIn()
- {
- // Make sure the Magnifier is running, and get its handle
- if (Process.GetProcesses().Where(p => p.ProcessName.ToLower() == "magnify").Count() == 0) {
- Process.Start("magnify.exe");
- System.Threading.Thread.Sleep(500); }
- IntPtr handle = Process.GetProcesses().Where(p => p.ProcessName.ToLower() == "magnify").First().Handle;
- // Figure out what size ("mode") it's in
- WINDOWPLACEMENT placement = new WINDOWPLACEMENT();
- placement.length = Marshal.SizeOf(placement);
- GetWindowPlacement(handle, ref placement);
- // Move the Magnifier to a predetermined location so we know where to click
- MoveWindow(handle, new Point(0, 0));
- // If Magnifier is in small mode, click it to put it in big mode.
- if (placement.rcNormalPosition.Size.Width == 132) {
- SetCursorPos(15, 15);
- mouse_event((int)HardwareEvents.MouseLeftDown, 15, 15, 0, 0);
- mouse_event((int)HardwareEvents.MouseLeftUp, 15, 15, 0, 0); }
- // Click the zoom in button. Yeah, I know, hackish. Isn't Win32 awesome?
- SetCursorPos(25, 25);
- mouse_event((int)HardwareEvents.MouseLeftDown, 25, 25, 0, 0);
- mouse_event((int)HardwareEvents.MouseLeftUp, 25, 25, 0, 0);
- }
- private void MoveWindow(IntPtr handle, Point point)
- {
- // TODO: Figure out how to look up the target window's size
- SetWindowPos(handle, new IntPtr((int)SpecialWindowHandles.HWND_TOP), (int)point.X, (int)point.Y, 500, 500, SetWindowPosFlags.ShowWindow);
- }
- private struct WINDOWPLACEMENT {
- public int length;
- public int flags;
- public int showCmd;
- public System.Drawing.Point ptMinPosition;
- public System.Drawing.Point ptMaxPosition;
- public System.Drawing.Rectangle rcNormalPosition; }
- [DllImport("user32.dll")]
- static extern bool GetWindowPlacement(IntPtr hWnd, ref WINDOWPLACEMENT lpwndl);
- [DllImport("user32.dll")]
- static extern bool SetCursorPos(int X, int Y);
- public static class HardwareEvents
- {
- public static int MouseMove = 0x0001;
- public static int MouseLeftDown = 0x0002, MouseLeftUp = 0x0004;
- public static int MouseRightDown = 0x0008, MouseRightUp = 0x0010; // best guess on the 0010
- public static int MiddleMouseDown = 0x20, MiddleMouseUp = 0x40;
- public static int MouseWheel = 0x800;
- }
- keybd_event(0x5B, 0x45, 0, new UIntPtr(0));
- keybd_event(0xBB, 0x45, 1, new UIntPtr(0));