保证SetForegroundWindow执行成功

论坛 期权论坛 脚本     
匿名技术用户   2020-12-29 03:08   61   0

网上搜索到的办法有两个,

第一个没自测

保证SetForegroundWindow成功
  在SetForegroundWindow之前比较早的时候(比如main函数里)调用一下以下代码:

DWORD dwTimeout = -1;  
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)&dwTimeout, 0);  
if (dwTimeout >= 100) {  
    SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID)0, SPIF_SENDCHANGE | SPIF_UPDATEINIFILE);  
}

第二个自测没问题

HWND hForeWnd = NULL; 
HWND hWnd= FindWindow(NULL, ""); 
DWORD dwForeID; 
DWORD dwCurID; 
 
hForeWnd =  GetForegroundWindow(); 
dwCurID =  GetCurrentThreadId(); 
dwForeID =  GetWindowThreadProcessId( hForeWnd, NULL ); 
AttachThreadInput( dwCurID, dwForeID, TRUE); 
ShowWindow( hWnd, SW_SHOWNORMAL ); 
SetWindowPos( hWnd, HWND_TOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE ); 
SetWindowPos( hWnd, HWND_NOTOPMOST, 0,0,0,0, SWP_NOSIZE|SWP_NOMOVE ); 
SetForegroundWindow( hWnd ); 
AttachThreadInput( dwCurID, dwForeID, FALSE);

参考链接:
http://www.cnblogs.com/ziwuge/archive/2012/01/06/2315342.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP