SetForegroundWindow

SetForegroundWindow  函数功能:该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程
  函数原型:BOOL SetForegroundWindow()
  SetForegroundWindow()函数本身是不带参数的,具体激活某个窗口的方法可以用:
  pWnd->SetForegroundWindow();//这里的pWnd即所要激活窗口的句柄。
  返回值:如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零。
  备注:前台窗口是z序顶部的窗口,是用户的工作窗口。在一个多任务优先抢占环境中,应让用户控制前台窗口。

SetWindowPlacement  函数功能:该函数设置指定窗口的显示状态和恢复,最大化,最小化位置。
  函及原型;BOOL SetWindowPlacement(HWND hWnd,CONST WINDOWPLACEMENT★lpwndpl);
  参数:
  hWnd:窗口句柄。
  lpwndpl:指向一个WINDOWPLACEMWNT结构的指针,该结构给出了新的显示状态和窗口位置。
  在调用函数SetWindowPlacement之前,将WINDOWPLACEMWNT结构的长度单元置为sizeof(WINDOWPLACEMENT)。如果lpwndpl->length设置不正确,函数SetWindowPlacement将失败。
  返回值:如果函数成功,返回值为非零。如果函数失败,返回值为零。若想获得更多错误信息,请调用callGetLastErro函数。
  备注:如果在WIDNOWPLACEMENT中指定的信息使窗口完全显示在屏幕之外,系统自动调整坐标以使窗口可见,兼顾屏幕设置和多种监视器配置。
  WINDOWPLACEMENT的长度成员信息设置为sizeof(WINDOWPLACEMENT),如果设置不正确,函数将返回FLASE。查看窗口位置坐标的信息,参看WINDOWPLACEMENT

GetActiveWindow:获取系统当前激活的窗口,也可以理解为获取焦点的窗口;GetForegroundWindow:获取系统当前最顶层窗口。

最前的窗口不一定是激活的窗口。比如说qq的主窗口,只要不靠到屏幕边上,就是总在最前的,你拖放一个ie过去是挡不住的,这时候,你用GetActiveWindow得到的是有焦点的ie窗口,用GetForegroundWindow得到的是qq的窗口。这个例子很直观。

原文地址:https://www.cnblogs.com/rosesmall/p/14785638.html