c++ - 在 MinGW g++ 编译器中获取 "tlhelp32.h"的编译错误

标签 c++ c windows process header-files

我正在编写一个简单的 C++ 应用程序来检查给定的 exe 文件示例:'a.exe' 是否正在运行(Windows 操作系统),我在 google 上搜索并在下面的链接中找到了一些代码。

http://stackoverflow.com/questions/3355379/how-do-i-find-out-if-a-exe-is-running-in-c

上面提到的代码使用了头文件“tlhelp32.h”。我刚刚复制了代码并做了一些必要的更改然后在 MinGW 中进行了编译,下一个问题来了,该头文件中提到的所有数据类型都被错误了 例如:“DWORD”没有命名类型,“LONG”没有命名类型,“WCHAR”没有命名类型,“CHAR”没有命名类型

我之前从未遇到过现有头文件无法编译的此类问题(是的,我已经检查过了)。

非常感谢对此的任何帮助。

代码如下:

#include <tlhelp32.h>


int main()
{
    PROCESSENTRY32 pe32 = {0};
HANDLE    hSnap;
int       iDone;
int       iTime = 60;
bool      bProcessFound;

while(true)    // go forever
{
    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    pe32.dwSize = sizeof(PROCESSENTRY32);
    Process32First(hSnap,&pe32);     // Can throw away, never an actual app

    bProcessFound = false;   //init values
    iDone = 1;

    while(iDone)    // go until out of Processes
    {
        iDone = Process32Next(hSnap,&pe32);
        if (strcmp(pe32.szExeFile,"a.exe") == 0)    // Did we find our process?
        {
            bProcessFound = true;
            iDone = 0;
        }
    }

    if(!bProcessFound)    // if we didn't find it running...
    {
        startProcess("C:\\MinGW\\"+"a.exe","");             // start it
    }
    Sleep(iTime*10);    // delay x amount of seconds.
}
return 0;

}

最佳答案

正如 Richard Critten 所说,在“tlhelp32”之前添加“Windows.h”可以解决问题,而且上面代码中的函数 startprocess() 从未存在过,因此请使用 shellexecute() 使其工作

例如:ShellExecute(NULL, "open", "c:\MinGW\a.exe", NULL, NULL, SW_SHOWDEFAULT);

关于c++ - 在 MinGW g++ 编译器中获取 "tlhelp32.h"的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31943646/

相关文章:

c++ - 为什么 std::vector 项目删除不会减少其容量?

c++ - 当测试技术性很强时,为什么要使用 FitNesse?

c - GDB 与 pthreads

windows - 加密的 RSA key 不适用于 Windows 中的 MongoDB

c++ - SDL_SaveBMP 倒置保存图片

c++ - 树可视化库 - 计算给定树数据的所有节点和线坐标的库

c++ - 从 pcl::people::Person Cluster<Point> 中提取点云

c - 调度程序不考虑 OpenCL 子设备亲和性

c++ - 如何终止使用 ShellExecute 启动的程序

python - 如何在后台运行python脚本?