为什么窗口切换不了呢?急。。。。

wangzicong 2005-09-11 08:05:48
程序的功能是打开4个ie,通过按钮1切换到ie1,按钮2切换到ie2。。。。

1。打开ie1。
ie2,ie3,ie4,用同样方法打开

void CIEChange1Dlg::OnOpenIE()
{
STARTUPINFO s1;
ZeroMemory( &s1, sizeof(s1) );
s1.cb = sizeof(s1);
ZeroMemory( &p1, sizeof(p1) );
CreateProcess( NULL, "C:\\Program Files\\Internet Explorer\\IEXPLORE.exe", NULL,NULL, FALSE, 0, NULL, NULL, &s1, &p1);
}

2。遍历所有的窗口

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
DWORD dwpid;
GetWindowThreadProcessId(hwnd, &dwpid);
LPPROCESS_INFORMATION pInfo = (LPPROCESS_INFORMATION)lParam;
if(dwpid == pInfo->dwProcessId)
{
pInfo->hProcess = hwnd;
return FALSE;
}
return TRUE;
}
3。返回窗口句柄
HWND GetProcessMainWnd(DWORD dwpid)
{
PROCESS_INFORMATION wi;
wi.dwProcessId = dwpid;
wi.hProcess = NULL;

EnumWindows(EnumWindowsProc,(LPARAM)&wi);
return HWND(wi.hProcess);
}
4。激活ie窗口

void CIEChange1Dlg::OnButton2()
{
::SetActiveWindow(GetProcessMainWnd(p1.dwProcessId));

}

为什么到弟4步,老实不能激活窗口,从而实现窗口的切换呢??
...全文
174 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dasiu 2005-09-12
  • 打赏
  • 举报
回复
使用 ::PostMessage(hWnd,WM_SETFOCUS,NULL,NULL);
可以实现
绝缘 2005-09-11
  • 打赏
  • 举报
回复
用::SetForegroundWindow(hWnd)试试呢
jjiaming 2005-09-11
  • 打赏
  • 举报
回复
看看SetActiveWindow的返回值,SetActiveWindow是否成功调用,另外,在按不同的按钮时,p1.dwProcessId的值是否改变,如果p1.dwProcessId的值不改变,当然总是会激活同一个窗口

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧