我正在使用pinvoke“user32.dll”将我的应用程序发送回(在所有其他应用程序后面),因此它位于桌面上,反之亦然。目前它只是切换 - 后退/前面。有没有办法检测我的应用程序是否在后面并将其置于前面,或者它是否在前面并将其发送回去?感谢。
答案 0 :(得分:2)
您可以通过调用
来检测您的窗口是否为活动窗口[DllImport("user32.dll")] static
static extern IntPtr GetForegroundWindow();
您以前可以致电
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
将窗口设置为前台,但Microsoft在Windows ME / 2000以后更改了它的功能(可能是XP?)。
针对此问题尝试各种各样的工作,您可能需要测试一些以查看哪些适合您。
http://www.tek-tips.com/faqs.cfm?fid=4262
http://markribau.org/blog/?p=7
我记得读过可以设置为允许SetForegroundWindow按需工作的注册表项,但这是一个系统范围的设置。
http://www.delphipages.com/forum/showthread.php?t=198261
如果有帮助,您可以使用 SetWindowPos 将窗口置于其他窗口后面或永久放在顶部
http://www.pinvoke.net/default.aspx/user32.SetWindowPos
http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx
答案 1 :(得分:0)