我试图每隔5秒获取一次鼠标的位置(x,y),所以我使用此代码来获取它
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
public static implicit operator Point(POINT point)
{
return new Point(point.X, point.Y);
}
}
[DllImport("user32.dll")]
public static extern bool GetCursorPos(out POINT lpPoint);
public static Point GetCursorPosition()
{
POINT lpPoint;
GetCursorPos(out lpPoint);
return lpPoint;
}
但是我必须运行这个方法来获取鼠标的新位置,所以我找到了这个代码,我不知道如何使用它:
var timer = new System.Threading.Timer(
e => Mymethode(),
null,
TimeSpan.Zero,
TimeSpan.FromMinutes(5));
如何一起使用此代码每隔5秒显示(控制台)位置
答案 0 :(得分:0)
这样的事情:
var timer = new System.Threading.Timer(
e =>
{
var p = GetCursorPosition();
Console.WriteLine(string.Format("X: {0}, Y: {1}", p.X, p.Y));
},
null,
TimeSpan.Zero,
TimeSpan.FromSeconds(5));
您只需在计时器回调中调用GetCursorPosition
,然后根据值执行任何操作。
这是一个完整的工作控制台应用程序,它将每隔5秒显示一次光标位置,直到您按Enter键:
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int X;
public int Y;
}
[DllImport("user32.dll")]
public static extern bool GetCursorPos(out POINT lpPoint);
public static POINT GetCursorPosition()
{
POINT lpPoint;
GetCursorPos(out lpPoint);
return lpPoint;
}
static void Main(string[] args)
{
var timer = new System.Threading.Timer(
e =>
{
var p = GetCursorPosition();
Console.WriteLine(string.Format("X: {0}, Y: {1}", p.X, p.Y));
},
null,
TimeSpan.Zero,
TimeSpan.FromSeconds(5));
Console.ReadLine();
}
}
}
注意我取出了将结构POINT
转换为Point
的部分,但您可以将其重新放入。不清楚您在那里Point
使用了什么。
答案 1 :(得分:0)
System.Timers.Timer GetMousePosition = new System.Timers.Timer();
GetMousePosition.Interval=5000;
GetMousePosition.Elapsed += new System.Timers.ElapsedEventHandler(GetMousePosition_Elapsed);
void GetMousePosition_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
POINT CursorPositon= GetCursorPosition()
textBox1.AppentText("Cursor is in X Coordinate: "+CursorPositon.X.ToString()+" and Y-Coordinate "+ CursorPositon.X.ToString());
}
答案 2 :(得分:0)
也许你想要的只是一个计时器刻度事件,每隔5秒就会调用你的" GetCursorPos"并打印鼠标的位置。
尝试以下内容:
Timer clock = new Timer();
clock.Interval = 5000; //Miliseconds
clock.Tick += clock_Tick;
clock.Start();
在你的clock_Tick:
void clock_Tick(object sender, EventArgs e)
{
Console.Writeline(GetCursorPos());
}