【问题标题】:How to get Object/Element/Control under mouse pointer of a external application window using c#?如何使用c#在外部应用程序窗口的鼠标指针下获取对象/元素/控件?
【发布时间】:2017-01-14 09:03:06
【问题描述】:

当鼠标位于使用 c# 的控件上时,我试图更改外部应用程序窗口的控件边框颜色, 我已经创建了一个寡妇窗体应用程序并设置了全局鼠标钩子以进行鼠标移动,并且我能够使用 windows api WindowFromPoint() 方法获取外部窗口的处理程序, 但我无法在鼠标指针下获得控制器, 是否有任何其他技术可以让控件在鼠标光标下时更改边框颜色,

基本上我想要的是在外部应用程序中显示什么是选定控件的视觉确认,有什么想法吗?

【问题讨论】:

  • 创建一个透明窗口并将其放在控件上。
  • @DavidHeffernan Thanx,我可以使用 winapi 创建透明面板或其他东西吗?
  • 是的,你可以这样做
  • @DavidHeffernan 我找到了一个名为 ControlPaint.DrawBorder(); 的方法在 p/Invoke 但它没有绘制外部应用程序的边框,我可以将它用于外部应用程序吗?
  • 您需要创建一个透明窗口并将其放在控件上。在那个透明窗口上,您可以绘制边框。

标签: c# winapi


【解决方案1】:

我用过

[DllImport("user32.dll")] 
static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);

获取客户端矩形并使用它着色

ControlPaint.DrawBorder(System.Drawing.Graphics.FromHwnd(hWnd), R, Color.Red, ButtonBorderStyle.Solid);

感谢@大卫赫弗南

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多