Windows窗口频繁失去焦点(有其他窗口弹出并迅速消失)

事情起因是我在5e平台玩CSGO,然后玩着玩着突然会切换到桌面,游戏是全屏1440*1280,桌面是1920*1080。

起初,我以为是平台问题,因为在玩完美或者官匹时不会出现,玩5e有概率出现,比如昨天没问题今天就有问题,或者今天没问题明天有问题。

  • 在网上查询5e闪退桌面或者5e切桌面并没有相关问题,所以排除了5e的问题。
  • 键盘拔下后,还是会出现问题,排除键盘轴体问题。
  • 电脑没有设置过定制任务、计划任务,排除计划任务的问题。
  • 电脑使用的dolby音效(游戏),插有线耳机时,偶尔会和平时声音不一样,打开Dolby Audio后出现下图情况,

    也没在意,就重启了电脑,然后继续游戏发现声音恢复了。

过了几天,玩着玩着又切桌面了,实在是受不了了,观察下任务管理器没发现什么异常,看任务栏发现每隔一小会就会出现一个程序然后突然消失,于是在网上查找win10窗口弹出并迅速消失,找到了知乎的这篇文章 “ Windows 10 瞬闪窗口事件对应始末 ”,顺着知乎的这篇文章,找到了NGA的一篇文章” 一个解决游戏突然弹回桌面/失去焦点/闪屏的小工具,含源代码 “。运行文中的代码,每切换一个窗口会显示一行新的信息,由此可以知道是哪个程序频繁弹窗并迅速消失。运行代码后输出下图所示信息,可以断定问题出现在dolbyaposvc这。继续在网上查找,找到微软社区一个关于dolbyaposvc的问题“ System 32 popup, system32 dolbyaposvc, usually around sometime of reopening laptop ”。微软独立顾问回答如下“ It appears that your sound card driver is triggering the same(Dolby SVC driver) ”,应该是和声卡驱动有关,重装声卡驱动后问题解决。

附上涉及到的代码(转自bbs.nga.cn),由于原作者下载链接已经404,所以提供编译好的exe文件,或者使用下面代码自行编译运行。
下载链接:whoareyou.exe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <Windows.h>
#include <wchar.h>
#include <Psapi.h>

#pragma comment(lib, "Psapi.lib")

int main()
{
HWND last_fore = NULL;
wchar_t name[MAX_PATH];
DWORD size = MAX_PATH;

while(true)
{
HWND fore = GetForegroundWindow();
if (fore != last_fore)
{
last_fore = fore;

DWORD processid;
GetWindowThreadProcessId(fore, &processid);

HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION, NULL, processid);

GetProcessImageFileNameW(process, name, size);

wprintf(L"%s\n", name);
}
Sleep(10);
}
return 0;
}