加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 我可以在相对于桌面窗口的记事本中找到当前的输入坐标

发布时间:2020-12-15 09:17:42 所属栏目:大数据 来源:网络整理
导读:我是否可以在Delphi应用程序的记事本窗口中找到键入坐标(相对于桌面坐标)?例如,如果我们看下面的图片,我在记事本窗口上打字.我可以找到屏幕坐标,我在记事本上打字. 编辑 如果有人可以提出通用解决方案,将会很有帮助.回答no1谈到记事本.控制台窗口怎么样?如
我是否可以在Delphi应用程序的记事本窗口中找到键入坐标(相对于桌面坐标)?例如,如果我们看下面的图片,我在记事本窗口上打字.我可以找到屏幕坐标,我在记事本上打字.

编辑
如果有人可以提出通用解决方案,将会很有帮助.回答no1谈到记事本.控制台窗口怎么样?如果我在控制台窗口上打字,是否可以找出坐标?

解决方法

我想,如果UAC不禁用它,你可以实现以下顺序:

>你必须学习记事本的窗口结构.使用WinSpy,WinSight或ProcFS for Total Commander等工具.然后你必须得到实际编辑框窗口的句柄(HWND).在StackOverflow和Google上已经多次讨论了枚举或查找其他应用程序窗口的主题.
>然后你必须向主编辑窗口询问它的坐标.请参阅获取{Client / Window} Rect函数,请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms633503.aspx和http://msdn.microsoft.com/en-us/library/windows/desktop/ms633519.aspx或许更好的是SendMessage EM_GETRECT自定义消息:http://msdn.microsoft.com/en-us/library/ms997530.aspx
>然后你必须知道插入符号的位置:如TMemo.SelEnd和TEdit.SelStart – 再次最好的方法是阅读它们在VCL中的实现方式.可能根植于SendMessage(EM_GETSEL,…) – http://msdn.microsoft.com/en-us/library/ms997530.aspx – 有一个很好的例子可以做到这一点
>然后你必须向Widows询问该位置的相对坐标 – 相对于上面步骤中的Client Rect.请参阅EMPOSFROMCHAR消息http://msdn.microsoft.com/en-us/library/windows/desktop/bb761631.aspx和德尔福样本于http://www.delphipages.com/forum/showthread.php?t=33707

然而有些人声称这并不总是可靠地运行:http://vbcity.com/forums/t/14951.aspx所以作为最后的手段,你可以使用硬核字符串解析,如本答案第1版所述.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读