Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
获取“的编译错误”;tlhelp32.h“;在MinGW g++;编译程序 >我正在编写一个简单的C++应用程序,它检查给定的EXE文件示例:“A.exe”是否运行(Windows OS),我已经在Google中查找并找到了下面的链接中的一些代码。_C++_C_Windows_Process_Header Files - Fatal编程技术网

获取“的编译错误”;tlhelp32.h“;在MinGW g++;编译程序 >我正在编写一个简单的C++应用程序,它检查给定的EXE文件示例:“A.exe”是否运行(Windows OS),我已经在Google中查找并找到了下面的链接中的一些代码。

获取“的编译错误”;tlhelp32.h“;在MinGW g++;编译程序 >我正在编写一个简单的C++应用程序,它检查给定的EXE文件示例:“A.exe”是否运行(Windows OS),我已经在Google中查找并找到了下面的链接中的一些代码。,c++,c,windows,process,header-files,C++,C,Windows,Process,Header Files,http://stackoverflow.com/questions/3355379/how-do-i-find-out-if-a-exe-is-running-in-c 上面提到的代码使用头文件“tlhelp32.h”。我只是复制了代码并做了一些必要的修改,然后在MinGW中编译了它,接下来的问题是,头文件中提到的所有数据类型都出错了 ex:'DWORD'不命名类型,'LONG'不命名类型,'WCHAR'不命名类型,'CHAR'不命名类型 我以前从未遇到过这样的问题,现有的头文件无法编译(是的

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

上面提到的代码使用头文件“tlhelp32.h”。我只是复制了代码并做了一些必要的修改,然后在MinGW中编译了它,接下来的问题是,头文件中提到的所有数据类型都出错了
ex:'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;

}
#包括
int main()
{
PROCESSENTRY32 pe32={0};
处理hSnap;
内碘酮;
int iTime=60;
发现布尔过程;
while(true)//永远走
{
hSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
pe32.dwSize=sizeof(PROCESSENTRY32);
Process32First(hSnap,&pe32);//可以扔掉,而不是真正的应用程序
bProcessFound=false;//初始值
碘酮=1;
while(iDone)//直到进程结束
{
iDone=Process32Next(hSnap和pe32);
if(strcmp(pe32.szExeFile,“a.exe”)==0)//我们找到进程了吗?
{
bProcessFound=true;
iDone=0;
}
}
如果(!bProcessFound)//如果我们没有发现它正在运行。。。
{
startProcess(“C:\\MinGW\\”+“a.exe”,”);//启动它
}
睡眠(iTime*10);//延迟x秒。
}
返回0;
}

正如Richard Criten所说,在“tlhelp32”之前添加“Windows.h”可以解决这个问题,而在上述代码中,函数startprocess()的更多内容从来都不存在,所以请使用shellexecute()使其工作


ex:ShellExecute(NULL,“打开”,“c:\MinGW\a.exe”,NULL,NULL,SW_SHOWDEFAULT)

#在
之前包含
#包含
criten!!!!!!!这是一个多么有效的答案啊,非常感谢它现在确实可以工作了,像以前一样没有错误,如果你不介意的话,我可以知道原因吗,因为我对这个概念不太熟悉,我还想知道任何网站,它们可以证明我们如何用c++@RichardGeorge处理进程-如果你为Windows编程,
#include
通常是个好主意。:-)关于这方面的信息,一个明显的起点是微软的Got it Pearson,在我修复完上述问题后,我通过MSDN了解了代码的具体功能,并从中了解了一些东西。谢谢!