Using System::AnsiString class

Using System::AnsiString class

本文关键字:class AnsiString Using System      更新时间:2023-10-16

我正试图从以下答案导入代码:获得完整的运行进程列表(Visual c++)

bool FindRunningProcess(AnsiString process) {
/*
Function takes in a string value for the process it is looking for like ST3Monitor.exe
then loops through all of the processes that are currently running on windows.
If the process is found it is running, therefore the function returns true.
*/
AnsiString compare;
bool procRunning = false;
HANDLE hProcessSnap;
PROCESSENTRY32 pe32;
hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcessSnap == INVALID_HANDLE_VALUE) {
    procRunning = false;
} else {
    pe32.dwSize = sizeof(PROCESSENTRY32);
    if (Process32First(hProcessSnap, &pe32)) { // Gets first running process
        if (pe32.szExeFile == process) {
            procRunning = true;
        } else {
            // loop through all running processes looking for process
            while (Process32Next(hProcessSnap, &pe32)) { 
                // Set to an AnsiString instead of Char[] to make compare easier
                compare = pe32.szExeFile;
                if (compare == process) {
                    // if found process is running, set to true and break from loop
                    procRunning = true;
                    break;
                }
            }
        }
        // clean the snapshot object
        CloseHandle(hProcessSnap);
    }
}

在Phil的回答中,他正在使用System::AnsiString类,我不确定如何将其包含在我的项目中,即它是已安装包的一部分还是我需要下载并包含它?

这个问题的扩展:是否有另一个替代品,我可以用它来实现与AnsiString相同的事情?

我对这段代码的最终目标是修改它,以便我可以得到正在运行的进程的当前列表,我正在寻找一个特定的进程终止,如果它正在运行。我尝试使用ce::string,但由于pe32.szExeFileTCHAR [260]类型,我无法将其传递给以下ce::string process_name;ce::string声明(这可能是他使用System::AnsiString的原因)。

我假设pe32.szExeFile将返回进程名,所以我想将其与另一个具有特定进程名的声明字符串进行比较。

好的,所以,AnsiString是什么并不清楚;你已经假设它是Embarcadero System::AnsiString类,坦率地说,这看起来是一个合理的假设

我不会去试图获得它,尽管。我会专注于编写标准代码,切换到std::string/std::wstring(酌情)。将作者的代码改编为可移植代码应该几乎是微不足道的。您必须尝试并阅读代码中使用的函数的文档,以了解哪些可以工作,哪些不能。它看起来System::AnsiString几乎或完全兼容std::string,但你只是不知道,直到你尝试它。

我再怎么强调都不过分,你不要踏入你的时间机器,在1950年打开它,带着一个装满指针和过时的c字串比较函数的午餐盒。我真的不明白为什么有人会建议这样做。