我目前正在开发一个表单应用程序,它可以覆盖另一个程序(Skype)。现在,我正在使用 TopMost = true,但这是一个非常糟糕的解决方案。
我有 Skype 窗口的句柄,以及我自己的窗口的句柄。如何使我的程序满足以下三个语句:
1. 如果 Skype 最小化,它必须消失
2. 它必须出现在 Skype 上方
3. 它必须出现在 Skype 上方的任何其他应用程序后面
上面和后面与 z 顺序有关。
我目前正在使用 SetWindowLong 函数,但无法获得所需的结果。
[DllImport("user32.dll")]
public static extern int SetWindowLong(HandleRef hWnd, int nIndex, HandleRef dwNewLong);
SetWindowLong(
new HandleRef(child, child.Handle),
-8, // GWL_HWNDPARENT
new HandleRef(owner, owner.Handle));
对于 #1,我的应用程序不断检查 Skype 的尺寸是否发生了变化,因此我也可以简单地检查窗口是否不再可见。但是,我对#2 和#3 完全不知所措。
提前致谢。克洛尔