我是c ++的新手,FindWindowA
在某些进程而不是其他进程中工作,例如:
FindWindowA(NULL, "Discord");
将起作用
但是FindWindowA(NULL, "Fortnite");
不会。
有人知道为什么吗? 谢谢。
答案 0 :(得分:2)
FindWindow
仅找到顶级窗口。如果要搜索与窗口标题完全匹配的内容,则必须考虑隐藏字符(空格,制表符等)。
即使您找到了窗口标题,也仅在未本地化该窗口的情况下才起作用-即,如果创建该窗口的程序已被本地化为另一种语言,那么您还必须本地化搜索字符串。
一种更可靠的方法是搜索类名称,因为通常不会进行本地化:FindWindow("myclass", NULL);
当然,如果有一个隐藏的顶级窗口创建了包含您要查找的窗口的子窗口,则此操作仍然会失败。要获取该窗口,可以调用EnumWindows
获取每个顶级窗口的句柄,然后为找到的每个顶级窗口调用EnumChildWindows
。
答案 1 :(得分:1)
Fortnite的窗口有一个或两个空格
sd.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
sd.OutputWindow = FindWindow((L"UnrealWindow"), (L"Fortnite "));
sd.SampleDesc.Count = 1;
sd.Windowed = TRUE;