c++17怎么获取当前进程名
时间: 2023-07-26 08:07:06 浏览: 164
在C++17中,可以使用标准库中的`<thread>`和`<system_error>`头文件中的`std::this_thread::get_id()`函数和`std::system_category()`函数获取当前线程的ID和系统错误类别。然后,可以使用`<Windows.h>`头文件中的`GetModuleFileName()`函数获取当前进程的文件名。
以下是获取当前进程名的示例代码:
```c++
#include <thread>
#include <system_error>
#include <Windows.h>
std::string get_process_name()
{
DWORD pid = GetCurrentProcessId();
HANDLE process = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, pid);
if (process != NULL)
{
HMODULE module;
DWORD cbNeeded;
if (EnumProcessModules(process, &module, sizeof(module), &cbNeeded))
{
char buf[MAX_PATH];
if (GetModuleFileNameExA(process, module, buf, MAX_PATH))
{
std::string path = buf;
std::size_t pos = path.find_last_of("\\/");
if (pos != std::string::npos)
{
return path.substr(pos + 1);
}
}
}
CloseHandle(process);
}
return "";
}
int main()
{
std::string process_name = get_process_name();
std::cout << "Current process name: " << process_name << std::endl;
return 0;
}
```
注意,在使用`GetModuleFileName()`函数时,需要包含`<Windows.h>`头文件,并且代码仅在Windows操作系统上运行。
阅读全文