我正在使用 pinvoke“user32.dll”将我的应用程序发送回(在所有其他应用程序之后),因此它位于桌面上,反之亦然。目前它只是切换 - 后/前。有没有办法检测我的应用程序是在后面并将其带到前面,还是在前面并将其发送到后面?谢谢。
问问题
1729 次
2 回答
2
您可以通过调用来检测您的窗口是否是活动窗口
[DllImport("user32.dll")] static
static extern IntPtr GetForegroundWindow();
你以前可以打电话
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
将您的窗口设置为前台,但微软在 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-19T09:39:11.307 回答
0
于 2010-01-19T09:39:12.793 回答