葛祥磊:窗口切换

来源:百度文库 编辑:九乡新闻网 时间: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;

}

 

 在main()中添加:

::EnumWindows((WNDENUMPROC)EnumWindowsProc, 0); //枚举所有屏幕上的顶层窗口

if(air_hWnd != NULL)

{

       ShowWindow(air_hWnd, SW_RESTORE); //设置指定窗口的显示状态

       ::SetForegroundWindow(air_hWnd); //指定窗口的线程设置到前台,并且激活该窗口

}