如何彻底的切换指定程序窗口到前台,或者说获得焦点?
需要实现的是:切换指定hwnd 到前台,并且让其获得焦点。 (不是完全在最上层)
指定的几个hwnd原本都是最大化全屏的,所以切换过去后,要让其全屏。
我目前的问题:切来切去,只能做到切过去后,显示在最前面,但终究没法获得焦点。
比如当前在A窗口,要切到B窗口:第一次切没问题,后面再切就会出现:B程序显示在最前面了,但任务栏上当前窗口还是A窗口,任务栏上面B窗口在闪烁,用户不得不用鼠标点一下,才能完全切到B窗口!
有时候B程序是全屏幕显示的,每次都要人工去弄一下,才能让任务栏消失,很讨厌。希望有彻底的完美的切换办法!除去彻底使用top_most外...
我的目前的源码:
SetWindowPos(hWnd, HWND_TOPMOST, -1, -1, -1, -1, SWP_NOMOVE|SWP_NOSIZE);
SetWindowPos(hWnd, HWND_NOTOPMOST, -1, -1, -1, -1, SWP_NOMOVE|SWP_NOSIZE);
HWND hForegdWnd = ::GetForegroundWindow();
DWORD dwCurID = ::GetCurrentThreadId();
DWORD dwForeID = ::GetWindowThreadProcessId(hForegdWnd, NULL);
::AttachThreadInput(dwCurID, dwForeID, TRUE);
::SetForegroundWindow(hWnd);
::AttachThreadInput(dwCurID, dwForeID, FALSE);
SwitchToThisWindow(hWnd, TRUE);
基本上能搜到的函数都干上了,还是不行!在线等高手解答,并在线测试,可用就立马结贴。