我如何从其进程名称获取窗口标题?

时间:2014-11-11 11:42:22

标签: c++ process

这是我的代码,用于检查进程名称是否存在:

bool isRunning (LPCSTR processname)
{
    HANDLE Snapshot;
    Snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if(Snapshot != INVALID_HANDLE_VALUE)
    {
        PROCESSENTRY32 ProcessEntry;
        BOOL           Succeed;
        ProcessEntry.dwSize = sizeof(PROCESSENTRY32);
        Succeed = Process32First(Snapshot, &ProcessEntry);

        while(Succeed)
        {
          if(lstrcmp(ProcessEntry.szExeFile,processname) == 0)
          {
           return true;
          }
      Succeed = Process32Next(Snapshot, &ProcessEntry);
    }

    CloseHandle(Snapshot);
    }
}

我如何使用它或编辑它来从其进程名称获取窗口标题(例如" notepad.exe")? 如果它存在,程序将返回文本,如"新文本文档 - 记事本"

1 个答案:

答案 0 :(得分:1)

这实际上是在Microsoft's description of CreateToolhelp32Snapshot中解决的。

它说“你可以使用QueryFullProcessImageName函数从32位进程中检索32位和64位进程的可执行映像的全名。”

您基本上需要通过HANDLE来检查QueryFullProcessImageName