C++ 芬德温没有';t工作c++;

C++ 芬德温没有';t工作c++;,c++,windows,winapi,C++,Windows,Winapi,所以我试图创建一个迷彩解锁器,但我从来没有遇到过通过findwindow获取进程id的问题 但是现在我试图找到黑色行动2的进程id,但是窗口名不起作用 使命召唤®:黑色行动II 代码: #包括 #包括 #包括 使用名称空间std; int main(){ HWND HWND=FindWindow(0,_T(“使命召唤®:黑色行动II-多人游戏”); 如果(hWnd){ cout看起来注册的符号可能是unicode,您需要使用: Unicode和ANSI名称 FindWindowW(Unicode

所以我试图创建一个迷彩解锁器,但我从来没有遇到过通过findwindow获取进程id的问题

但是现在我试图找到黑色行动2的进程id,但是窗口名不起作用

使命召唤®:黑色行动II

代码:

#包括
#包括
#包括
使用名称空间std;
int main(){
HWND HWND=FindWindow(0,_T(“使命召唤®:黑色行动II-多人游戏”);
如果(hWnd){

cout看起来注册的符号可能是unicode,您需要使用:

Unicode和ANSI名称
FindWindowW(Unicode)和FindWindowA(ANSI)


或者,您可以使用并搜索窗口类名。

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,(“任务召唤®:黑色Ops II-多人游戏”));

    除非您打算同时提供ASCII和Unicode版本,否则您真的不需要再使用
    \u t()
    宏(并删除
    tchar.h
    )。只需使用
    FindWindowW
    和宽字符串(
    L”“
    ).l2p,noob.Er…我的意思是…你得到了什么错误代码?我发现了问题,在没有错误的地方,问题是它没有发现窗口不普遍适用,而且最肯定的是,没有任何你想要推荐的东西。它失败的速度会快于你将线程的区域设置更改回正常状态的速度。
    FindWindow()
    还可以搜索类名,不需要Ex版本。
    HWND hWnd = FindWindowW(NULL, L"Call of Duty®: Black Ops II - Multiplayer");