博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
光标跟随
阅读量:4453 次
发布时间:2019-06-07

本文共 1227 字,大约阅读时间需要 4 分钟。

       
#region 得到光标在屏幕上的位置
 
        
[DllImport(
"user32"
)]
 
         
public 
static 
extern 
bool 
GetCaretPos(
out 
Point lpPoint);
 
         
[DllImport(
"user32.dll"
)]
 
         
private 
static 
extern 
IntPtr GetForegroundWindow();
 
         
[DllImport(
"user32.dll"
)]
 
         
private 
static 
extern 
IntPtr GetFocus();
 
         
[DllImport(
"user32.dll"
)]
 
         
private 
static 
extern 
IntPtr AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, 
int 
fAttach);
 
         
[DllImport(
"user32.dll"
)]
 
         
private 
static 
extern 
IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
 
         
[DllImport(
"kernel32.dll"
)]
 
         
private 
static 
extern 
IntPtr GetCurrentThreadId();
 
         
[DllImport(
"user32.dll"
)]
 
         
private 
static 
extern 
void 
ClientToScreen(IntPtr hWnd, 
ref 
Point p);
 
 
         
private 
Point CaretPos()
 
         
{
 
             
IntPtr ptr = GetForegroundWindow();
 
             
Point p = 
new 
Point();
 
 
             
//得到Caret在屏幕上的位置   
 
             
if 
(ptr.ToInt32() != 0)
 
             
{
 
                 
IntPtr targetThreadID = GetWindowThreadProcessId(ptr, IntPtr.Zero);
 
                 
IntPtr localThreadID = GetCurrentThreadId();
 
 
                 
if 
(localThreadID != targetThreadID)
 
                 
{
 
                     
AttachThreadInput(localThreadID, targetThreadID, 1);
 
                     
ptr = GetFocus();
 
                     
if 
(ptr.ToInt32() != 0)
 
                     
{
 
                         
GetCaretPos(
out   
p);
 
                         
ClientToScreen(ptr, 
ref   
p);
 
                     
}
 
                     
AttachThreadInput(localThreadID, targetThreadID, 0);
 
                 
}
 
             
}
 
             
return 
p;
 
         
}
 
         
#endregion

转载于:https://www.cnblogs.com/swtool/p/6546937.html

你可能感兴趣的文章
链表_leetcode203
查看>>
hdu4746:2013杭州网络赛I 莫比乌斯反演
查看>>
ubuntu linux下火狐跨版本升级方法详解(也同样适合linux下安装火狐中国版)
查看>>
基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
查看>>
OSX: 10.9的SMB网络共享连接可能破坏其权限设置
查看>>
连接不上sql server服务器的解决方案
查看>>
《鬼谷子的局5》—— 读后总结
查看>>
记录安装oracle的那些事(二)之双系统安装
查看>>
c3po数据库连接池中取出连接
查看>>
bootstrap-table 分页
查看>>
使用本机IP调试web项目
查看>>
【bzoj1082】栅栏[SCOI2005]
查看>>
day18 Java学习(Map集合)
查看>>
Integer与int的区别
查看>>
hdu 1087
查看>>
LazyMan的Promise解法
查看>>
lua语言三则特性
查看>>
asp.net的Nelocity模板引擎
查看>>
fis webpack 原理对比
查看>>
22 广播的发送
查看>>