c++ - FindWindow 没有找到窗口

标签 c++ winapi visual-c++

我计划用 C++ 制作一个简单的训练控制台,但第一步我遇到了 FindWindow() 的问题

#include <stdio.h>
#include <cstdlib>
#include <windows.h>
#include <winuser.h>
#include <conio.h>

LPCTSTR WindowName = "Mozilla Firefox";
HWND Find = FindWindow(NULL,WindowName);
int main(){
    if(Find)
    {
        printf("FOUND\n");
        getch();
    }
    else{
        printf("NOT FOUND");
        getch();
    }
}

上面的代码我用FindWindow()试试看是否执行命令但是执行输出的时候总是显示

NOT FOUND

我已经从 property Project 中替换了 Character Set

Use Unicode Character Set

Use Multi-Byte Character Set

LPCTSTR

LPCSTR

LPCWSTR

但结果总是一样,希望有人能帮助我。

最佳答案

FindWindow 仅在窗口具有准确指定的标题时才查找窗口,而不仅仅是子字符串。

或者你可以:


搜索窗口类名:

HWND hWnd = FindWindow("MozillaWindowClass", 0);

enumerate所有窗口并对标题执行自定义模式搜索:

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
    char buffer[128];
    int written = GetWindowTextA(hwnd, buffer, 128);
    if (written && strstr(buffer,"Mozilla Firefox") != NULL) {
        *(HWND*)lParam = hwnd;
        return FALSE;
    }
    return TRUE;
}

HWND GetFirefoxHwnd()
{
    HWND hWnd = NULL;
    EnumWindows(EnumWindowsProc, &hWnd);
    return hWnd;
}

关于c++ - FindWindow 没有找到窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16530871/

相关文章:

c++ - 在读取缓冲区已满时使用 select 检查套接字是否可写

c++ - 为什么 isocpp 允许我们超过枚举类值?

c++ - 更改局部变量的地址

c++ - 通过将其分配给 const std::tuple<int, int>& 来延长 std::tuple<int&,int> 的生命周期

c++ - DirectX 9 "Loading textures"进度条

c++ - 可以自动生成hpp或h文件吗?

c++ - 检测到堆栈崩溃/段错误

Windows SuspendThread 没有? (GetThreadContext 失败)

c++ - Visual C++ 2008中如何将MFC应用程序项目添加到Win32应用程序项目中

c++ - 函数模板中的数组类型推导