我需要跟踪鼠标位置。虽然我尝试了几种方法,但如果鼠标位于另一台显示器上,我就无法跟踪/捕获位置。
[DllImport("user32.dll")]
public static extern bool GetCursorPos(ref Point pt);
[DllImport("user32.dll")]
public static extern bool GetCursorInfo(out CURSORINFO pci);
public void GetPosition(out int X, out int Y)
{
Point pt = new Point(0, 0);
X = Y = 0;
if (MouseMonitor.GetCursorPos(ref pt))
{
X = pt.X;
Y = pt.Y;
}
这只适用于一个屏幕。我还读到我可能会尝试GetCursorInfo。我试过这个,但总是假的。 [的DllImport( “USER32.DLL”)] public static extern bool GetCursorInfo(out CURSORINFO pci);
有什么建议吗?我的目标是跟踪鼠标位置(在我自己的应用程序之外),无论它在哪个屏幕上。
答案 0 :(得分:0)
您的示例代码适用于我的双显示器系统......
使用.NET Framework实际上可以简化一些事情:System.Windows.Forms.Cursor类具有静态Position属性。
例如,我创建了一个新的Windows窗体项目,然后将System.Windows.Forms.Timer拖到窗体上。我将Enabled属性设置为true,并将此代码添加到Tick事件:
this.Text = string.Format("{0}, {1}", Cursor.Position.X, Cursor.Position.Y);
跑完项目,它在我的两台显示器上按预期工作......
答案 1 :(得分:0)
使用DWORD GetMessagePos() - 它为您提供最后一个Windows消息鼠标位置。但要小心,它返回DWORD,但内部有两个SHORTS(16位有符号整数)打包。所以LOWORD / HIWORD宏(或C#各自)将不起作用。
http://msdn.microsoft.com/en-us/library/ms644938(VS.85).aspx