【发布时间】:2015-11-03 18:56:42
【问题描述】:
我正在编写一个简单的 C++ 应用程序,用于检查给定的 exe 文件示例:'a.exe' 是否正在运行(windows OS),我在谷歌上搜索并在以下链接中找到了一些代码。
http://stackoverflow.com/questions/3355379/how-do-i-find-out-if-a-exe-is-running-in-c
上面提到的代码使用了一个头文件“tlhelp32.h”。我只是复制了代码并做了一些必要的更改,然后在 MinGW 中编译了它,下一个问题出现了,该头文件中提到的所有数据类型都被错误输出
ex: 'DWORD' does not name a type, 'LONG' does not name a type, 'WCHAR' does not name a type,'CHAR' does not name a type
在存在的头文件无法编译之前,我从未遇到过此类问题(是的,我已经检查过了)。
非常感谢您对此提供的任何帮助。
代码如下:
#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;
}
【问题讨论】:
-
#include <windows.h>之前#include <tlhelp32.h> -
克里滕!!!!!!多么有效的答案非常感谢它现在可以正常工作没有像以前那样的错误如果你不介意我可以知道为什么会这样,因为我是这个概念的新手,我也想知道任何可以详细说明我们如何处理的网站使用 c++ 中的进程
-
@RichardGeorge - 如果您为 Windows 编程,
#include <windows.h>通常是个好主意。 :-) 一个明显的信息起点是微软的Using the Windows Headers -
知道了 Pearson,在我完成上述问题的修复后,我通过 MSDN 了解了代码的确切作用并从中学到了一些东西。谢谢!
标签: c++ c windows process header-files