Большинство программ, использующих положение курсора мыши, должны получать координаты только тогда, когда указатель мыши находится в одном из своих окон. Однако некоторые программы требуют координат экрана, даже если указатель находится за пределами окна.
GetCursorPos
Если вы разрабатываете программное обеспечение для Microsoft Windows, вам может потребоваться получить положение указателя мыши относительно экрана. Если вам нужны координаты указателя, когда он находится над одним из окон вашего приложения, это довольно просто сделать. Однако если ваше приложение должно отслеживать указатель мыши за пределами своих окон или если ваше программное обеспечение вообще не имеет окна, то .NET framework не предоставляет простого способа получения координат. Вместо этого вы должны использовать функцию Windows API с именем «GetCursorPos».
В этой статье мы создадим простую программу на C#, которая отслеживает положение указателя мыши. Мы будем использовать консольное приложение, чтобы показать, что никакие Windows Forms или WPF window не требуются.
Как узнать координаты x, y на пк.
Для начала создайте новое консольное приложение и убедитесь, что автоматически созданный класс, содержащий метод Main, открыт.
Ссылка на функцию API
GetCursorPos не может быть вызван непосредственно из C#. Нам нужно ссылаться на него с помощью служб вызова платформы (P/Invoke). Для того, чтобы использовать P/Invoke, но мы должны использовать атрибут из System.Runtime.InteropServices пространства имен. Чтобы упростить доступ к этому пространству имен, добавьте в файл класса следующую директиву using:
using System.Runtime.InteropServices;
Теперь вы можете добавить код, определяющий функцию. GetCursorPos возвращает логическое значение true, если координаты были получены правильно, и false в противном случае. Координаты возвращаются в виде точечной (POINT) структуры с использованием выходного параметра.
Добавьте определение функции в класс:
[DllImport(«user32.dll»)] static extern bool GetCursorPos(out POINT lpPoint);
Точечная структура не существует как тип .NET, поэтому нам нужно ее определить. Создайте новый файл с именем «POINT.cs» и добавьте код для структуры:
public struct POINT
Вызов GetCursorPos
С определенной функцией GetCursorPos вы можете вызвать ее непосредственно из вашего кода C#. Давайте добавим код к методу Main и содержащему его классу, чтобы многократно вызывать функцию и отображать координаты экрана указателя мыши.
Чтобы уменьшить мерцание при обновлении координат, мы будем показывать новое местоположение только в том случае, если оно отличается от предыдущего значения. Чтобы сохранить старую позицию, создайте два целочисленных поля для координат X и Y, добавив следующий код внутри класса, но вне каких-либо методов:
static int _x, _y;
Теперь мы можем создать метод, который вызывает GetCursorPos и отображает координаты. Нам нужно объявить переменную, которая будет хранить позицию перед передачей ее в функцию API. Нам также нужно проверить, что функция возвращает истинный результат и что указатель мыши переместился, прежде чем мы обновим вывод.
Язык Си — Как узнать координаты курсора мыши и размер окна с помощью функций WINAPI.
Добавьте в класс следующий метод для выполнения вышеуказанных действий:
static void ShowMousePosition() < POINT point; if (GetCursorPos(out point) point.X != _x point.Y != _y) < Console.Clear(); Console.WriteLine(«(,)», point.X, point.Y); _x = point.X; _y = point.Y; > >
Давайте вызовем вышеупомянутый метод повторно из основного метода до тех пор, пока не будет нажата клавиша. Мы можем управлять этим с помощью простого цикла while, который ожидает свойство Console.KeyAvailable должно быть установлено в значение true. Мы также спрячем курсор консоли до тех пор, пока цикл не закончится, чтобы он не мигал рядом с отображаемыми координатами.
Добавьте следующий код в метод Main:
Console.CursorVisible = false; while (!Console.KeyAvailable) < ShowMousePosition(); >Console.CursorVisible = true;
Запустите программу и переместите мышь, чтобы увидеть координаты в окне консоли. Обратите внимание, что текст обновляется правильно, даже если указатель мыши не находится в области консоли и когда активированы другие приложения.
Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
заметки, си шарп, курсор
Источник: upread.ru
Определяем текущее положение курсора мыши с Python
В прошлой статье мы говорили об автоматизации графического интерфейса с Python и библиотекой pyautogui, что предполагает симуляцию действий с клавиатурой, мышью и не только. И для написания скрипта симуляции мыши важно найти координаты курсора в текущий момент, и постоянно отображать их. В данной статье мы напишем простой скрипт для решения данной задачи.
Для этого нам нужно во первых отобразить текущие координаты мыши, во вторых обновить их в соответствии с перемещением курсора по экрану. На уровне кода мы должны вызвать функцию position(), для получения текущих координат, затем при перемещении курсора стереть предыдущие координаты используя символ b и обработать исключение KeyboardInterrupt так чтобы сочетание клавиш CTRL-C вызвало выход.
Откроем текстовый редактор и создадим файл с именем Mouse_now.py. Поместим в него наш код:
# На первом этапе импортируем модули pyautogui, time. Также напечатаем напоминание пользователю, о возможности выхода из программы нажав CTRL-C
import pyautogui
import time
print(«Press CTRL-C to quit»)
»’
Для постоянного вывода текущих координат из mouse.position() можно использовать бесконечный цикл. А для кода завершающего программу нужно будет перехватить исключение KeyboardInterrupt, которое возникает всякий раз, когда пользователь нажимает CTRL-C.
Если этого не сделать то try/exept отобразит уродливую строку сообщения об ошибке.
И чтобы обработать цикл заключим его в оператор try »’
try:
while True:
# получение текущих координат
x, y = pyautogui.position()
# метод str(x) превращает число в строку а rjust(4) сдвигает его на четыре позиции вправо
positionStr = ‘X:’+ str(x).rjust(4) +’ Y:’+ str(y).rjust(4)
# end предотвращает добавление символа новой строки, без этого старые координаты удалить не получится
print(positionStr, end = »)
# escape-символ b стирает конец строки и чтобы удалить всю строку умножаем его на длину строки
print(‘b’*len(positionStr), end = », flush = True)
# для предотвращения мигания при выполнении цикла используем засыпание
time.sleep(0.01)
# Когда пользователь нажимает CTRL-C, выполнение программы переходит к разделу except и # Done будет напечатан с новой строки
except KeyboardInterrupt:
print(‘nDone’)
Когда программа запустится, будут напечатаны только две строки. Они должны выглядеть примерно так:
# вывод
Press Ctrl-C to quit
X: 165 Y: 144
Таким образом с помощью данного скрипта, вы можете определить координаты мыши для ваших сценариев автоматизации графического интерфейса.
Создано 05.01.2021 09:20:12
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 0 ):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Источник: myrusakov.ru
Как узнать координаты мыши?
3 ноября 2014 г.
Просмотров: 2196
Инструкции
Для определения текущих координат мыши используются специальные утилиты, которые доступны для скачивания из интернета. Также подобные программы можно написать самостоятельно.
Вам понадобится
- — программа Win Spy.
Инструкция
Инструкция
var coordinateX = 0, coordinateY = 0; if (!evevnt) evevnt = window.event; if(evevnt.pageX || evevnt.pageY)
else if(evevnt.clientX || evevnt.clientY)
Источник: imguru.ru