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