- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试带来一个窗口前景。我正在使用这段代码。但它不起作用。有人可以帮忙吗?
ShowWindowAsync(wnd.hWnd, SW_SHOW);
SetForegroundWindow(wnd.hWnd);
// Code from Karl E. Peterson, www.mvps.org/vb/sample.htm
// Converted to Delphi by Ray Lischner
// Published in The Delphi Magazine 55, page 16
// Converted to C# by Kevin Gale
IntPtr foregroundWindow = GetForegroundWindow();
IntPtr Dummy = IntPtr.Zero;
uint foregroundThreadId = GetWindowThreadProcessId(foregroundWindow, Dummy);
uint thisThreadId = GetWindowThreadProcessId(wnd.hWnd, Dummy);
if (AttachThreadInput(thisThreadId, foregroundThreadId, true))
{
BringWindowToTop(wnd.hWnd); // IE 5.5 related hack
SetForegroundWindow(wnd.hWnd);
AttachThreadInput(thisThreadId, foregroundThreadId, false);
}
if (GetForegroundWindow() != wnd.hWnd)
{
// Code by Daniel P. Stasinski
// Converted to C# by Kevin Gale
IntPtr Timeout = IntPtr.Zero;
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, Timeout, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Dummy, SPIF_SENDCHANGE);
BringWindowToTop(wnd.hWnd); // IE 5.5 related hack
SetForegroundWindow(wnd.hWnd);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Timeout, SPIF_SENDCHANGE);
}
代码解释
Making a window the foreground window requires more than just calling the SetForegroundWindow API. You must first determine the foreground thread and attach it to your window, using AttachThreadInput, then call SetForegroundWindow. That way they can share input states.
First I call GetForegroundWindow to get the handle of the current foreground window. Then a few calls to GetWindowThreadProcessId retrieve the threads associated with the current foreground window and the window I want to bring to the foreground. If these threads are the same a simple call to SetForegroundWindow is all that is necessary. Otherwise, the foreground thread is attached to the window that I am bringing to the front and detached from what was the current foreground window. The AttachThreadInput API handles this.
内容取自 here谢谢。
最佳答案
我以前用过这个方法:
[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
Process[] processes = Process.GetProcessesByName("processname");
SetForegroundWindow(processes[0].MainWindowHandle);
更多信息:http://pinvoke.net/default.aspx/user32.SetForegroundWindow
关于c# - 如何使用 C# 将窗口置于前景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867210/
我的应用程序可以正确接收通知,但无法显示包含收到的信息的弹出通知(如果应用程序已打开)。 注意:如果应用程序在后台,通知会毫无问题地显示。 我的代码: 我以这种方式收到通知: @Override pu
我需要根据收到远程推送通知的时间来处理它们。当应用程序在后台或终止时,如果我收到推送通知,当我点击推送通知时,我会在 ` 中处理它 - (void)application:(UIApplication
我想根据控件的状态更改/动画自定义按钮控件模板的 Foreground 属性。 在 RC0 之前,我设置了 ContentPresenter 的前景,给它一个 x:Name,并在 VisualStat
我正在尝试设置 block ,以便其前景色每次都会改变鼠标光标移到它上面,这是我的代码: Remove Message
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。 6
有时,当我执行“docker-compose up -d”时,我忘记了“-d”部分。因此它开始向我显示启动日志,如果我按Ctrl + C,它将终止所有过程并向我显示关闭日志。 我对此有几个问题: 如果
我有一个启动器风格的应用程序。用户启动应用程序后,时钟开始滴答作响,经过一定时间后,用户将返回到我的应用程序的主要 Activity,并被告知时间到了。 为了实现这一点,我有一个 AsyncTask,
我有一个 FrameLayout,我想通过选择器为它应用前景可绘制对象,我正在尝试实现“drawSelectorOnTop”但是为了简单的布局 现在当用户按下“state_pressed”时选择器不适
我很难改变 Angular 2 Material 的前景颜色。例如在工具栏中,文本是黑色的。我尝试用以下样式更改它 @import '~@angular/material/theming'; $pri
我有一个奇怪的案例。我的 swift ios 应用程序已连接到 Cloudkit。如果应用程序未运行(后台状态),我每次都会收到我的通知徽章和警报!如果应用程序正在运行,则不会收到任何通知!我知道它没
这个问题在这里已经有了答案: How to change Status Bar text color in iOS (59 个答案) How to change the status bar bac
我想知道是否可以更改共享元素过渡的 z 顺序?看: 我有一个带有图像的布局,它填满了整个屏幕。图片前面是一个显示图片标题的文本框。如果我点击文本框,将开始过渡到详细信息 Activity 。因此,我实
每当文本框获得焦点时,文本的边框和前景都会根据当前主题更改: 主题灯->边框:黑色,文字:白色,背景:透明 theme dark ->border:white, text:white, backgro
我最近开始熟悉 Web 应用程序开发并努力解决一个基本的 css 布局问题。 所需的布局是一个中心区域重叠几个背景元素。看这里: 此图像显示了所需的布局: 我也在 codepen 上破解过它: Cod
这是交易。我可以创建一个 ListBox 并为其设置样式。我可以编辑模板的副本,以便状态在 Expression Blend 3 中可用。我可以更改状态,以便在选择时修改行项目的背景颜色。但是由于 C
我可以通过这样做来改变 QImage 的背景: QPainter painter(&image); painter.setCompositionMode(QPainter::CompositionMo
我有一个为 iOS8 实现的共享扩展。该服务使用 OAuth 进行身份验证。我用于扩展的登录信息与容器应用共享。 问题是: 当我在扩展中时,然后应用程序切换到容器应用程序并注销,然后应用程序切换回包含
我有一个 WPF Canvas 项目,我从工具箱中将对象拖放到 Canvas 上。根据某些数据,其中一些对象应该闪烁或闪烁。我得到一个未处理的异常:无法在不可变对象(immutable对象)实例上设置
我是一名优秀的程序员,十分优秀!