我在我的程序用用CreateProcess()调用了另外的应用程序,活动的窗口就变成了所调用的应用程序。我想重新把我的应用程序设置为活动的窗口,请问我应该怎么写啊?部分程序如下:
......
CreateProcess(.....)
//我试了好多种方法,都没有用
//BringWindowToTop(m_pShowInfoWnd->m_hWnd);
//m_pShowInfoWnd->SetWindowPos((CWnd*)HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
//m_pShowInfoWnd->SetForegroundWindow();
//m_pShowInfoWnd->SetActiveWindow();
//SetForegroundWindow(m_pShowInfoWnd->m_hWnd);哪位前辈来指一下路啊。。
......
CreateProcess(.....)
//我试了好多种方法,都没有用
//BringWindowToTop(m_pShowInfoWnd->m_hWnd);
//m_pShowInfoWnd->SetWindowPos((CWnd*)HWND_TOP,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
//m_pShowInfoWnd->SetForegroundWindow();
//m_pShowInfoWnd->SetActiveWindow();
//SetForegroundWindow(m_pShowInfoWnd->m_hWnd);哪位前辈来指一下路啊。。
解决方案 »
- [ODBC]SQLConfigDataSource()配置SQL Server时不能填UID和PWD么?
- CMap< int, int, CArray<int, int>, CArray<int, int> > 为什么不能通过编译
- 客户区上的控件或者窗口 怎么做成可以拖动的
- 如何获取IE缓存中文件的Internet地址
- 请问关于"NTVDM CPU遇到无效指令"的问题
- 有谁遇到过一安装VC系统就重启的情况?
- 高手们 帮忙看看这个错误是怎么回事?
- 数控方面 出出主意
- 在线求助:如何更该函数的内容????
- 各位大虾,要实现多记录的修改,删除,增加,在一次性更新数据库,有这样的方法吗?
- CreateThread问题
- 大虾们请进 求教个关于编译的问题
LockSetForegroundWindow()
CreateProcess()
该问题已经解决了,我用的是另外一种方法,先获取有焦点的线程,然后让它和自己的线程合并,然后就可以设置焦点什么的,最后把线程分离。
不知道这种方法会不会有副作用。
代码如下:
HWND curHWnd=::GetForegroundWindow();
DWORD otherThreadID=::GetWindowThreadProcessId(curHWnd,NULL);
if(::AttachThreadInput(::GetCurrentThreadId(),otherThreadID,TRUE))
{
HWND hFocusWnd=::GetFocus();
::SetFocus(m_pShowInfoWnd->m_hWnd); if(hFocusWnd!=0)
::AttachThreadInput(GetCurrentThreadId(),otherThreadID,FALSE);
}
else
{
::SetFocus(m_pShowInfoWnd->m_hWnd);
}