如何带来另一个不属于该程序的窗口

时间:2010-10-07 23:01:22

标签: c++ z-index

我真的很难找到一种方法来提出另一个程序窗口。

例如,我使用FindWindow来查找记事本的句柄。然后我尝试使用SetWindowPos(hWnd,0,0,0,0,0,SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE)向前移动窗口;

但它不起作用!! ShowWindow也没有!

你能帮忙,也许可以给我看一段代码吗?

由于

1 个答案:

答案 0 :(得分:-2)

Dunno如果这是相同或不同的,但在Windows开发的某些时候,微软增加了一些过于巧妙的“反弹出”代码,这将阻止一个没有焦点的程序最小化它的窗口...相反,窗口在程序栏中的条目只会闪烁。也许有类似的逻辑阻止非前台程序向前推进其窗口?

在任何情况下,这里都有一些尝试的代码,可能会有所帮助,也可能没有帮助:

 // Check to see if we are the foreground thread
 DWORD foregroundThreadID = GetWindowThreadProcessId(GetForegroundWindow(), NULL);
 DWORD ourThreadID = GetCurrentThreadId();

 // If not, attach our thread's 'input' to the foreground thread's
 if (foregroundThreadID != ourThreadID) AttachThreadInput(foregroundThreadID, ourThreadID, TRUE);

 // Bring our window to the foreground
 SetForegroundWindow(hWnd);

 // If we attached our thread, detach it now
 if (foregroundThreadID != ourThreadID) AttachThreadInput(foregroundThreadID, ourThreadID, FALSE);

 // Force our window to redraw
 InvalidateRect(hWnd, NULL, TRUE);