Я запускаю это в окне 10 с разрешением 1920x1080, а для Scale and Layout установлено значение 125%.
Чтобы увидеть проблему, я написал несколько строк кода, которые установят курсор на (x =100, y = 100) Paint.exe, затем щелкните левой кнопкой мыши.Я запускаю один и тот же код с поддержкой DPI (без масштабирования) и без DPI (с автоматическим масштабированием в Windows), но результаты не совпадают.
- Запустите Ms Paint, выберите кисть и цвет
- Кнопка запуска кода запуска
- Повтор в другом режиме
Вот результаты:
![enter image description here](https://i.stack.imgur.com/xfK8Q.png)
[DllImport("user32")] static extern IntPtr FindWindowA(string lpClassName, string lpWindowName);
[DllImport("user32")] static extern IntPtr FindWindowExA(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle);
private void button1_Click(object sender, EventArgs e) {
//MSPaintApp
//MSPaintView
//Afx:00007FF701360000:8
var handle = FindWindowA("MSPaintApp", null);
handle = FindWindowExA(handle, IntPtr.Zero, "MSPaintView", null);
handle = FindWindowExA(handle, IntPtr.Zero, "Afx:00007FF701360000:8", null); // paper
System.Threading.Thread.Sleep(500);
Point point = new Point(100, 100);
User32.ClientToScreen(handle, ref point);
User32.SetCursorPos(point.X, point.Y); //Move cursor to (100; 100) of paper
User32.PostMessageW(handle, 513, 0, 100 + 100 * 65536); //WM_LBUTTONDOWN
User32.PostMessageW(handle, 514, 0, 100 + 100 * 65536); //WM_LBUTTONUP
}
Почему они это делают?и сколько типов сообщений они изменят?