首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.NET中控制windows应用程序焦点

如何在.NET中控制windows应用程序焦点
EN

Stack Overflow用户
提问于 2010-01-19 17:24:45
回答 2查看 1.7K关注 0票数 0

我使用pinvoke "user32.dll“将我的应用程序发送到后台(在所有其他应用程序后面),这样它就位于桌面上,反之亦然。目前,它只是切换--背面/正面。有没有一种方法可以检测我的应用程序是在后台并将其置于前端,还是位于前端并将其发送至后台?谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-01-19 17:39:11

方法可以检测窗口是否为活动窗口。

代码语言:javascript
复制
[DllImport("user32.dll")] static
static extern IntPtr GetForegroundWindow();

你以前可以打电话给

代码语言:javascript
复制
[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

票数 2
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2092393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档