gpt4 book ai didi

delphi - 我可以找出记事本中相对于桌面窗口的当前打字坐标吗

转载 作者:行者123 更新时间:2023-12-03 15:29:05 25 4
gpt4 key购买 nike

我是否可以从 Delphi 应用程序中找到记事本窗口中的打字坐标(相对于桌面坐标)?例如,如果我们看下面的图片,我正在记事本窗口上打字。我能找到我在记事本上打字的屏幕坐标吗?

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

enter image description here

最佳答案

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

  1. 你必须学习记事本的windows结构。使用 WinSpy++WinSightProcFS for Total Commander 等工具。然后你必须获取实际编辑框窗口的句柄(HWND)。枚举或查找其他应用程序窗口的主题已在 StackOverflow 和 Google 上讨论过多次。

  2. 然后你必须向主编辑窗口询问它的坐标。请参阅 Get{Client/Window}Rect 函数,请参阅 http://msdn.microsoft.com/en-us/library/windows/desktop/ms633503.aspxhttp://msdn.microsoft.com/en-us/library/windows/desktop/ms633519.aspx也许更好的是 SendMessage EM_GETRECT 自定义消息:http://msdn.microsoft.com/en-us/library/ms997530.aspx

  3. 然后你必须知道插入符号的位置:例如 TMemo.SelEndTEdit.SelStart - 同样最好的方法是阅读它们的位置在VCL中实现。可能 Root 于 SendMessage(EM_GETSEL,...) - http://msdn.microsoft.com/en-us/library/ms997530.aspx - 有一个现成的示例可以做到这一点

  4. 然后,您必须向 Widows 询问该位置的相对坐标 - 相对于您在上述步骤中获得的客户端矩形。请参阅 EM_POSFROMCHAR 消息 http://msdn.microsoft.com/en-us/library/windows/desktop/bb761631.aspx和 Delphi 示例位于 http://www.delphipages.com/forum/showthread.php?t=33707

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

关于delphi - 我可以找出记事本中相对于桌面窗口的当前打字坐标吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com