Delphi - 从另一个Application控件激活提示

时间:2014-12-03 08:22:42

标签: delphi

我正在尝试通过聚焦时从delphi创建的不同应用程序的控件中激活Hint,我使用hook来识别聚焦控件,然后使用WM_MOUSEMOVE,我认为它将激活该控件的提示,句柄将是Control本身,lParam是控件的左侧和顶部。 Control激活OnMouseMove事件,但提示从不显示。但是当我使用SetCursorPos时,提示显示,但是我需要显示提示,而光标移动到该控件上。你能帮我解决这个问题吗?提前谢谢......顺便说一下我使用的是Delphi XE4

2 个答案:

答案 0 :(得分:0)

真正问的问题是如何显示驻留在另一个应用程序上的控件的提示(我担心没有钩子,应用程序无法完成),标题是“Delphi - 从另一个应用程序控件激活提示”

首先是:这可以在不知道其他应用程序使用什么语言的情况下完成,但将它放在这里非常复杂(我不是这种编码方式的专家,我也讨厌那些工作的应用程序方式)。

第二:主要想法是挂钩其他应用程序,在Google上搜索该应用程序的一些代码,这些代码可以显示鼠标正在经过的对象的矩形孔方块,该应用程序在执行时被图标化(i不记得它的名字。)

Waht这样的应用程序:当你将鼠标移动到屏幕上时,它覆盖了鼠标悬停在控件上方的矩形,然后如果你按下键来打印屏幕,那么这个小区域就是唯一可以进入剪贴板的区域。我看到有这样的应用程序有一个额外的功能,他们可以移动这样的控件,如果你按键盘上的光标,也可以隐藏/启用/禁用这样的控制...更多,它还可以使隐藏的控件可见,等...我看到它在我的电脑上工作了,嘿,为了好玩它很漂亮,DeBug或在某些应用程序上获得额外的东西也很棒(让一些手册可见并启用然后可以使用这些功能)。 / p>

拜托,请理解我是盗版并且也反对使用这些应用程序让代码运行...某些应用程序需要付费才能启用某些菜单,但是他们有代码,不需要将EXE更改为有/使用菜单;只是使用这种应用程序使有限的应用程序无限制(只需启用或显示隐藏的菜单和瞧)。

注意:要取消隐藏菜单,不需要将鼠标指向应用程序,可以在任何地方移动。

我想说的是:任何应用都可以移动,改变正在运行的任何其他应用(至少在Windows上)的任何控制,所以也许可以有办法显示这样的提示。

过去我曾经使用过DeBug我自己的应用程序这样的应用程序(对不起,我不记得名字),所以我不需要在错误隐藏某些东西的情况下重新编译,也可以使用按钮,标签,文本,连击,备忘录等。

现在我的小问题是:我只需要标题所说的内容,但我不能让它起作用。

必须:

  1. 鼠标位置必须无关紧要(它也必须能够在应用程序之外)
  2. 当使用键盘(Space或Enter)按下具有焦点的按钮时,或者只是在我的应用程序的某个地方使用某些代码后,我想在短时间内显示特定TEdit的提示。
  3. 我没有得到提示;除非鼠标点超过这样的TEdit,但我希望/需要鼠标指针不要超过它,也不要跳到TEdit。

    想法显示该提示的Conept:在做了一些改变某些事情的代码之后,显示相关的额外信息。

    示例:

    • 使用打开的对话框加载文件的按钮,文件名放在ReadOnly TEdit上(因此它允许用户复制文本,但不能更改它);我希望得到额外的信息。我希望这样的TEdit能够显示出来。

    该提示用于不带有大量字段(TLabel)的过载窗口,用于显示此类文件数据。

    简单的想法:这样的提示显示了TimeStamp和所选文件的大小。

    PD:不太相关(因为我尝试使用普通的纯文本提示),但提示也可以存储完整的HTML页面,第三方工具显示为HTMLhint,因此他们可以显示很多信息基于Web的格式的文件(也是其内容等);正如我所说,我首先尝试使用标准纯文本提示。

答案 1 :(得分:-1)

为了以编程方式显示提示,您需要调用指定position参数的TApplications ActivateHint方法。 http://docwiki.embarcadero.com/Libraries/XE3/en/Vcl.Forms.TApplication.ActivateHint

基于位置参数应用程序自动查找哪个控件位于该位置并显示其提示。

注意:位置参数屏幕坐标以像素为单位,而不是您的控制坐标。因此,您必须使用ClientToScreen方法来适当地更改坐标。

您可以在此处查看如何使用此功能的简单示例:https://stackoverflow.com/a/15031208/3636228

现在,如果您需要从其他应用程序执行此操作,则必须向这两个应用程序添加一些通信机制,以便可以发送正确的消息告诉对方在特定位置显示提示。但这确实需要您能够更改这两个应用程序。

编辑:这适用于VCL应用程序,但我不确定它是否适用于FireMonkey应用程序。