使用System :: AnsiString类

时间:2015-06-02 19:03:24

标签: c++ winapi

我正在尝试从以下答案中导入代码:Get full running process list ( Visual C++ )

event.target

在Phil的回答中,他正在使用 $(document).ready(function() { $('*').click(function(e) { e.stopPropagation(); var idName = $(e.target).attr('class'); alert(idName); }); }); 类,我不知道如何在我的项目中包含这个,即它是安装包的一部分还是我需要下载并包含它?

这个问题的扩展:我可以使用另一种替代品来实现与AnsiString相同的东西吗?

我对此代码的最终目标是修改它,以便我可以获取正在运行的进程的当前列表,并且我正在寻找一个特定的进程,如果它正在运行则终止。我尝试使用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); } } ,但由于System::AnsiStringce::string类型,我无法将其传递给以下pe32.szExeFile的{​​{1}}声明(这是可能是他使用TCHAR [260])的原因。

我假设ce::string将返回进程名称,因此我想将其与具有特定进程名称的另一个声明的字符串进行比较。

1 个答案:

答案 0 :(得分:3)

好吧,那么,AnsiString是什么并不清楚; 你认为它是the Embarcadero System::AnsiString class,坦率地说,这似乎是一个合理的假设

但是,我不打算尝试获得它。 我会专注于编写标准代码,切换到std::string / std::wstring(视情况而定)。要使作者的代码可以移植,应该是微不足道的。您将不得不四处阅读并阅读该代码中使用的函数的文档,以查看哪些有用,哪些无效。 看起来就像System::AnsiString几乎或完全std::string兼容,但在你尝试之前你就不会知道。

我无法强调你不要走进你的时间机器并在1950年打开它的重要性,一个充满指针和可怕陈旧的C的午餐盒是多么重要-string比较函数。我真的不明白为什么有人会这样做。