我真的很难找到一种方法来提出另一个程序窗口。
例如,我使用FindWindow来查找记事本的句柄。然后我尝试使用SetWindowPos(hWnd,0,0,0,0,0,SWP_SHOWWINDOW | SWP_NOSIZE | SWP_NOMOVE)向前移动窗口;
但它不起作用!! ShowWindow也没有!
你能帮忙,也许可以给我看一段代码吗?
由于
答案 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);