需要实现的是:切换指定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);基本上能搜到的函数都干上了,还是不行!在线等高手解答,并在线测试,可用就立马结贴。
指定的几个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);基本上能搜到的函数都干上了,还是不行!在线等高手解答,并在线测试,可用就立马结贴。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货