我是c ++的新手,FindWindowA
正在为某些流程而不是其他流程工作,例如:FindWindowA(NULL, "Discord");
可以工作,但FindWindowA(NULL, "Fortnite");
不会。
谁知道为什么?谢谢。
FindWindow
只找到顶级窗口。如果要搜索与窗口标题完全匹配的内容,则必须考虑隐藏的字符(空格,制表符等)。
即使您找到窗口标题,它也只有在该窗口未本地化时才会起作用 - 即,如果创建该窗口的程序针对不同的语言进行了本地化,那么您还必须本地化您的搜索字符串。
更可靠的方法是搜索类名,因为这通常不会被本地化:FindWindow("myclass", NULL);
当然,如果有一个隐藏的顶级窗口创建一个包含您正在寻找的窗口的子窗口,这仍然会失败。要获得该窗口,您可以调用EnumWindows
来获取每个顶级窗口的句柄,并为找到的每个顶级窗口调用EnumChildWindows
。