葛祥磊:窗口切换
来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 10:50:48
窗口切换的两种方法:
1.模拟键盘输入(缺点:会有Alt+Tab切换的过程显示)
模拟Alt+Tab键:
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0);//按下Alt键
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0);//按下TAB键
Sleep(500);//延时500毫秒
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 2, 0 );//释放TAB键
keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 2, 0);//释放Alt键**/
2.通过进程名,设置窗口
CString title;
CString s("titleText");//指定窗口的标题条文本
HWND air_hWnd = NULL; //窗口句柄
// EnumWindows函数的回调函数
BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lparam)
{
CWnd* pWnd = CWnd::FromHandle(hWnd);//通过窗口句柄得到窗口指针
if(hWnd != NULL && pWnd->IsWindowVisible())
{
pWnd->GetWindowText(title);//得到窗口名
if(title.Compare(s) == 0)//如果窗口名为指定的窗口名,返回这个窗口句柄
{
air_hWnd = hWnd;
return FALSE;
}
}
return TRUE;
}
::EnumWindows((WNDENUMPROC)EnumWindowsProc, 0); //枚举所有屏幕上的顶层窗口
if(air_hWnd != NULL)
{
ShowWindow(air_hWnd, SW_RESTORE); //设置指定窗口的显示状态
::SetForegroundWindow(air_hWnd); //指定窗口的线程设置到前台,并且激活该窗口