Как отловить вид курсора вне формы - C#
Формулировка задачи:
Здравствуйте, собственно вопрос заключается как получить вид курсора вне формы.
Стремлюсь к коду который будет получать определенный вид курсора вне формы и тогда выполнять функцию.
Решение задачи: «Как отловить вид курсора вне формы»
textual
Листинг программы
- using MouseKeyboardActivityMonitor;
- using MouseKeyboardActivityMonitor.WinApi;
- using System;
- using System.Runtime.InteropServices;
- using System.Windows.Forms;
- namespace WindowsFormsApp1
- {
- public partial class Form1 : Form
- {
- [StructLayout(LayoutKind.Sequential)]
- struct POINT
- {
- public Int32 x;
- public Int32 y;
- }
- [StructLayout(LayoutKind.Sequential)]
- struct CURSORINFO
- {
- public Int32 cbSize; // Specifies the size, in bytes, of the structure.
- // The caller must set this to Marshal.SizeOf(typeof(CURSORINFO)).
- public Int32 flags; // Specifies the cursor state. This parameter can be one of the following values:
- // 0 The cursor is hidden.
- // CURSOR_SHOWING The cursor is showing.
- public IntPtr hCursor; // Handle to the cursor.
- public POINT ptScreenPos; // A POINT structure that receives the screen coordinates of the cursor.
- }
- /// <summary>Must initialize cbSize</summary>
- [DllImport("user32.dll")]
- static extern bool GetCursorInfo(ref CURSORINFO pci);
- Hooker hooker;
- MouseHookListener mhListener;
- public Form1()
- {
- InitializeComponent();
- this.TopMost = true;
- this.FormBorderStyle = FormBorderStyle.FixedToolWindow;
- this.FormClosing += Form1_FormClosing;
- hooker = new GlobalHooker();
- mhListener = new MouseHookListener(hooker);
- mhListener.MouseMove += Mhl_MouseMove;
- mhListener.Start();
- }
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
- {
- mhListener.Dispose();
- }
- private void Mhl_MouseMove(object sender, MouseEventArgs e)
- {
- try
- {
- CURSORINFO ci = new CURSORINFO();
- ci.cbSize = Marshal.SizeOf(typeof(CURSORINFO));
- var res = GetCursorInfo(ref ci);
- var cursor = new Cursor(ci.hCursor);
- label1.Text = $"{res};{cursor.ToString()};{ci.hCursor};[{ci.ptScreenPos.x};{ci.ptScreenPos.y}]";
- }
- catch(Exception ex)
- {
- label1.Text = ex.Message;
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д