Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查外部窗口的一部分是否覆盖_C#_Windows_Winapi - Fatal编程技术网

C# 如何检查外部窗口的一部分是否覆盖

C# 如何检查外部窗口的一部分是否覆盖,c#,windows,winapi,C#,Windows,Winapi,我正在为扑克明星们建立一个HUD来显示一些相关的统计数据 覆盖是一个UserControl:Form,我通过winapi将其从statusbar和Alt+T中隐藏。 事实上,它有一个最高的,总是在扑克桌上,但这会导致一些副作用: 我附上了一张照片来显示我的问题 1:一切都好 2:我的webbrowser只覆盖了扑克桌的一部分,在这种情况下会显示HUD(好的!) 3:浏览器覆盖了放置HUD的桌子区域。在这种情况下,我的HUD不应该是最上面的 我拥有的数据: IntPtr手柄(扑克桌的) 点位

我正在为扑克明星们建立一个HUD来显示一些相关的统计数据

覆盖是一个UserControl:Form,我通过winapi将其从statusbar和Alt+T中隐藏。 事实上,它有一个最高的,总是在扑克桌上,但这会导致一些副作用:

我附上了一张照片来显示我的问题

  • 1:一切都好
  • 2:我的webbrowser只覆盖了扑克桌的一部分,在这种情况下会显示HUD(好的!)
  • 3:浏览器覆盖了放置HUD的桌子区域。在这种情况下,我的HUD不应该是最上面的
我拥有的数据:

  • IntPtr手柄(扑克桌的)
  • 点位置(在屏幕上)
  • 点大小(从窗口)
哪一个WinAPI函数可以帮助ne?有人知道一些例子吗? 我确信,这是可能的,有Porgrams(PokerTracker,HoldEmanager)解决了这个挑战

即时通讯最常用的方法是永远在扑克桌上。因此,如果用户单击它,HUD可能不会被覆盖


//编辑

我现在用一个定时器在1毫秒间隔内完成了,它工作60%,有一些副作用。宁为无

   if (GetForegroundWindow() == TableHandle) {
            this.TopMost = true;
        } else {
            this.TopMost = false;
        }


是我自己想出来的-开始吧

public class WinAPI {
    [DllImport("user32.dll")]
    public static extern IntPtr SetWindowLong(IntPtr hWnd, int nIndex, uint dwNewLong);

    public const int GWL_HWNDPARENT = -8;
}


WinAPI.SetWindowLong(this.Handle, WinAPI.GWL_HWNDPARENT, (uint)this.ObservedHandle);