我使用pinvoke "user32.dll“将我的应用程序发送到后台(在所有其他应用程序后面),这样它就位于桌面上,反之亦然。目前,它只是切换--背面/正面。有没有一种方法可以检测我的应用程序是在后台并将其置于前端,还是位于前端并将其发送至后台?谢谢。
发布于 2010-01-19 17:39:11
方法可以检测窗口是否为活动窗口。
[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
发布于 2010-01-19 17:39:13
这些链接应该会有所帮助:
How to get the z-order in windows?
http://msdn.microsoft.com/en-us/library/ms632599%28VS.85%29.aspx#zorder
https://stackoverflow.com/questions/2092393
复制相似问题