C# - 验证光标 != 是否为默认值
本文关键字:是否 默认值 验证 光标 | 更新日期: 2023-09-27 18:30:40
所以,我有一个问题,我无法解决它。
当我单击按钮时,光标会转到确定的位置,在此之后,它执行一次单击。当它这样做时,我的应用程序被最小化(提议),光标停留在我使用的其他程序中。在这个确定的位置,光标将"默认"更改为"手",我希望在这一刻,我的应用程序显示一个消息框。
问题是:当这个其他程序打开时,我的应用程序没有识别光标已更改,我使用以下代码:
If (Cursor.Current != Cursors.Default)
{ MessageBox.Show("Hello!");
}
它不起作用。
为什么?可以帮我吗?
对不起,我的英语XD不好
Cursor.Current
属性获取当前线程拥有的游标。这意味着:
- 无法从非 UI 线程获取 UI 的当前光标
- 您无法获取不同的进程(因此无法获取不同线程)的游标
如果要获取全局游标,则需要使用其他方法。 Cursor.Current
内部使用GetCursor
。其文件指出:
若要获取有关全局游标的信息(即使它不归当前线程所有),请使用
GetCursorInfo
。
您可以使用来自 PInvoke.net 的签名进行 P/调用此本机函数。
下面是使用它获取全局游标并将其转换为托管游标实例的示例:
CURSORINFO info;
info.cbSize = Marshal.SizeOf(typeof(CURSORINFO));
Boolean ret = GetCursorInfo(out info);
if (!ret) {
throw new Exception();
}
Cursor c = new Cursor(info.hCursor);