分类: C/C++
2012-01-27 14:20:54
windows下简单的调用Setforegroundwindow并不能将窗口置最前,我找到三种方法可以实现该功能。
1、先置topmost,然后取消
SetWindowPos(HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
SetWindowPos(HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
2、改变系统环境参数
先设置环境变量
DWORD lockTime = 0;
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, &lockTime, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, 0,
SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);
退出程序时还原环境变量
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, lockTime, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);3、AllowSetForegroundWindow HMODULE hModule = NULL;