Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过C+;获取外部运行程序的窗口句柄+;_C++_Window Handles_Findwindow - Fatal编程技术网

C++ 通过C+;获取外部运行程序的窗口句柄+;

C++ 通过C+;获取外部运行程序的窗口句柄+;,c++,window-handles,findwindow,C++,Window Handles,Findwindow,有一个外部运行的程序,我需要的能力来调整大小。对我来说,最重要的是标题的一部分是版本和与该实例相关的其他特定信息。我知道在不同版本中应该保持一致的子字符串。 我尝试了Findwindow()函数,如果您有标题的确切措辞,该函数会很好地工作,但如果您只有一部分,则不会工作。我也尝试过EnumWindows,但我相信它也有同样的局限性(我没有太多的运气)。 我觉得我能做的最简单的事情(如果可能的话)就是从图像名称中获取窗口句柄,以便调整大小。 想法?EnumWindows就是专门为此而设计的。您创建

有一个外部运行的程序,我需要的能力来调整大小。对我来说,最重要的是标题的一部分是版本和与该实例相关的其他特定信息。我知道在不同版本中应该保持一致的子字符串。 我尝试了Findwindow()函数,如果您有标题的确切措辞,该函数会很好地工作,但如果您只有一部分,则不会工作。我也尝试过EnumWindows,但我相信它也有同样的局限性(我没有太多的运气)。 我觉得我能做的最简单的事情(如果可能的话)就是从图像名称中获取窗口句柄,以便调整大小。
想法?

EnumWindows就是专门为此而设计的。您创建自己的回调函数以传递给EnumWindows,它将为枚举的每个窗口调用回调函数,并将窗口的hwnd传递给它。您可以在回调函数中调用GetWindowText来获取窗口标题,并像搜索其他文本一样搜索该文本。那个代码有什么问题吗?为什么不发布呢?

这是我刚刚在MSVS 2010上测试的一段工作代码,它可以完美地工作:

#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#include <windows.h>


BOOL CALLBACK FindWindowBySubstr(HWND hwnd, LPARAM substring)
{
    const DWORD TITLE_SIZE = 1024;
    TCHAR windowTitle[TITLE_SIZE];

    if (GetWindowText(hwnd, windowTitle, TITLE_SIZE))
    {
        //_tprintf(TEXT("%s\n"), windowTitle);
        // Uncomment to print all windows being enumerated
        if (_tcsstr(windowTitle, LPCTSTR(substring)) != NULL)
        {
            // We found the window! Stop enumerating.
            return false;
        }
    }
    return true; // Need to continue enumerating windows
}

int main() 
{
    const TCHAR substring[] = TEXT("Substring");
    EnumWindows(FindWindowBySubstr, (LPARAM)substring);
}
#包括
#包括
#包括
#包括
BOOL回调FindWindowBySubstr(HWND-HWND,LPARAM子字符串)
{
常量DWORD TITLE_SIZE=1024;
TCHAR windowTitle[标题大小];
if(GetWindowText(hwnd、windowTitle、TITLE\U大小))
{
//_tprintf(文本(“%s\n”),窗口标题);
//取消注释以打印正在枚举的所有窗口
if(_tcsstr(windowTitle,LPCTSTR(substring))!=NULL)
{
//我们找到窗口了!停止枚举。
返回false;
}
}
返回true;//需要继续枚举窗口
}
int main()
{
常量TCHAR子字符串[]=文本(“子字符串”);
枚举窗口(FindWindowBySubstr,(LPARAM)子字符串);
}

在这里查找有关EnumWindows的信息:我仍在努力让代码在我的程序中编译。现在遇到了一些小问题。