C# 监视光标在系统范围内的位置
我需要制作一个小型的系统托盘应用程序,该应用程序在系统范围内监控光标位置,并根据光标手柄ID显示或隐藏屏幕键盘。例如,如果光标位于IE中的文本框(位置等于IBeam),则会弹出键盘。C# 监视光标在系统范围内的位置,c#,cursor,monitoring,C#,Cursor,Monitoring,我需要制作一个小型的系统托盘应用程序,该应用程序在系统范围内监控光标位置,并根据光标手柄ID显示或隐藏屏幕键盘。例如,如果光标位于IE中的文本框(位置等于IBeam),则会弹出键盘。 我有系统托盘应用程序(无格式应用程序)的代码,但无法找到使其监视系统的方法。欢迎提供有关监控系统光标位置功能的任何帮助。谢谢。要实现事件驱动,您需要使用SetWindowsHookEx。您不能直接通过.NET执行此操作,但必须插入DLL。这是一本书。这是使用System.Runtime.InteropService
我有系统托盘应用程序(无格式应用程序)的代码,但无法找到使其监视系统的方法。欢迎提供有关监控系统光标位置功能的任何帮助。谢谢。要实现事件驱动,您需要使用
SetWindowsHookEx
。您不能直接通过.NET执行此操作,但必须插入DLL。这是一本书。这是使用System.Runtime.InteropServices
导入user32.dll完成的。MSDN文章给出了从C#调用SetWindowsHookEx
、CallNextHookEx
和UnhookWindowsHookEx
的分步说明。CodeProject还有一篇关于监控系统光标位置的文章。:
private void Pos()
{
for (; ; )
{
Thread.Sleep(10);
Point position = Cursor.Position;
//You can use these to pass to your system tray or whereever you need it.
somePublicXVar = position.X;
somePublicYVar = position.Y;
}
}
public void PointPosition()
{
Thread pointThread = new Thread(new ThreadStart(Pos));
pointThread.Start();
}
使用标准的
TextBox
可以很容易地完成,但使用某种复合的TextBox
却不容易,例如WPF中的TextBox
。只需使用光标。定位在计时器的Tick事件处理程序中。请使用示例代码?循环占用大量CPU!!根据您的需要,您应该尝试为Thread.Sleep(minmilissecondsyoucanafford)使用更高的数字。希望它能有所帮助。需要的是:无论何时我的光标在任何应用程序的教科书中定位,屏幕键盘都会像平板电脑一样出现。Windows Metro做得很好,但桌面模式缺少此功能。@Regu或设置一个勾号事件,如Hans Passant对原始帖子的评论。使用条件和游标位置重新使用代码。如果我使用.Position,则位置会随着鼠标移动而改变,但如果我需要cursor.handle,则控制柄不会改变。我认为您不想查看光标控制柄,而是要在鼠标位置上执行命中测试。看看这个,发现一个家伙在C++中寻找同样的东西。有人想把代码转换成c#吗?我确实使用了一个转换器,但不确定它是否完成了所有必要的转换:LRESULT回调winProc(int-nCode,WPARAM-WPARAM,LPARAM-LPARAM){if(nCode<0)return CallNextHookEx(hhk,nCode,WPARAM,LPARAM);if(LPARAM){cwpsstruct*msg=(cwpsstruct*)LPARAM;if((msg->message==WM_命令)&(HIWORD(msg->WPARAM)==EN_SETFOCUS))MessageBox(NULL,“focus!”,“Information”,MB_ICONINFORMATION);}return CallNextHookEx(hhk,nCode,wParam,lParam);}@JoeCoder看看我提到的MSDN文章。它显示了如何从C#调用这些函数。