[英]findwindow doesn't work c++
所以我试图创建一个迷彩解锁器,但我从来没有遇到过通过 findwindow 获取进程 ID 的问题
但现在我试图找到 black ops 2 的 proc id 但窗口名称不起作用
使命召唤®:黑色行动 II
代码:
#include <iostream>
#include <Windows.h>
#include <tchar.h>
using namespace std;
int main(){
HWND hWnd = FindWindow(0, _T("Call of Duty®: Black Ops II - Multiplayer"));
if(hWnd){
cout << "window found" << endl;
}
return 0;
}
看起来注册的符号可能是unicode,您需要使用FindWindowW()
:
Unicode 和 ANSI 名称
FindWindowW (Unicode) 和 FindWindowA (ANSI)
或者,您可以使用FindWindowEx()
并搜索窗口类名称。
FindWindow
工作正常。 您的问题的可能原因是:
您有编码错误。 您应该使用 Unicode API:
HWND hWnd = FindWindowW(NULL, L"Call of Duty®: Black Ops II - Multiplayer");
没有带有该窗口文本的顶级窗口。 使用像 Spy++ 这样的工具来检查。
您还应该确保仔细阅读文档。 具体说明如下:
如果函数失败,则返回值为 NULL。 要获取扩展错误信息,请调用GetLastError 。
你应该按照它说的做,并在失败时调用GetLastError
。
我会尝试按类查找窗口,因为应用程序可能会更改其标题,并且类名通常没有花哨的字符。 如果您不认识他们,请寻找一些工具(Spy++ + 我认为它随 Visual Studio 一起提供)或使用EnumWindows
和GetClassName
使用简单工具创建列表
FindWindowA 对我有用 :) 所以我只是从 tchar 更改为普通的 HWND hWnd = FindWindowA(0, ("Call of Duty®: Black Ops II - Multiplayer"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.