繁体   English   中英

findwindow 不起作用 C++

[英]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工作正常。 您的问题的可能原因是:

  1. 您有编码错误。 您应该使用 Unicode API:

     HWND hWnd = FindWindowW(NULL, L"Call of Duty®: Black Ops II - Multiplayer");
  2. 没有带有该窗口文本的顶级窗口。 使用像 Spy++ 这样的工具来检查。

您还应该确保仔细阅读文档。 具体说明如下:

如果函数失败,则返回值为 NULL。 要获取扩展错误信息,请调用GetLastError

你应该按照它说的做,并在失败时调用GetLastError

我会尝试按类查找窗口,因为应用程序可能会更改其标题,并且类名通常没有花哨的字符。 如果您不认识他们,请寻找一些工具(Spy++ + 我认为它随 Visual Studio 一起提供)或使用EnumWindowsGetClassName使用简单工具创建列表

FindWindowA 对我有用 :) 所以我只是从 tchar 更改为普通的 HWND hWnd = FindWindowA(0, ("Call of Duty®: Black Ops II - Multiplayer"));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM