获取进程信息-C++

这段C++代码展示了如何获取进程信息,包括进程路径、优先级和终止进程。通过OpenProcess、EnumProcessModules和GetModuleFileNameEx等函数获取进程详细信息,并提供了查找特定进程ID和强制终止进程的功能。
摘要由CSDN通过智能技术生成
//获取进程路径
CString GetProcessPath( DWORD idProcess )
{
    // 获取进程路径
    CString sPath;
    // 打开进程句柄
    HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, idProcess );
    if( NULL != hProcess )
    {
        HMODULE hMod;
        DWORD cbNeeded;
        // 获取路径
        if( EnumProcessModules( hProcess, &hMod, sizeof( hMod ), &cbNeeded ) )
        {
            DWORD dw = GetModuleFileNameEx( hProcess, hMod, sPath.
                GetBuffer( MAX_PATH ), MAX_PATH );
            sPath.ReleaseBuffer();
            }
        CloseHandle( hProcess );
        }
    return( sPath );
}

//获取进程优先级
CString GetProcessPriority(HANDLE hProcess)
{
    char sz1[10] = "NORMAL";
    char sz2[10] = "IDLE";
    char sz3[10] = "REALTIME";
    char sz4[10] = "HIGH";
    char sz5[10] = "NULL";
    char sz6[15] = "ABOVENORMAL";
    char sz7[15] = 
获取当前所有线程的信息,你可以使用C++标准库中的`<thread>`头文件中的函数,结合操作系统提供的相关API来实现。以下是一个基本的示例代码: ```cpp #include <iostream> #include <thread> #include <vector> #include <Windows.h> // 适用于Windows操作系统的API头文件 // 线程信息结构体 struct ThreadInfo { DWORD threadId; // 线程ID HANDLE threadHandle; // 线程句柄 }; // 获取当前所有线程信息的函数 std::vector<ThreadInfo> GetAllThreadsInfo() { std::vector<ThreadInfo> threads; // 获取系统中所有线程的快照 HANDLE threadSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0); if (threadSnapshot == INVALID_HANDLE_VALUE) { std::cerr << "Failed to create thread snapshot." << std::endl; return threads; } // 遍历快照中的所有线程 THREADENTRY32 threadEntry; threadEntry.dwSize = sizeof(threadEntry); if (Thread32First(threadSnapshot, &threadEntry)) { do { if (threadEntry.th32OwnerProcessID == GetCurrentProcessId()) { // 只获取当前进程的线程 HANDLE threadHandle = OpenThread(THREAD_ALL_ACCESS, FALSE, threadEntry.th32ThreadID); if (threadHandle != NULL) { ThreadInfo threadInfo; threadInfo.threadId = threadEntry.th32ThreadID; threadInfo.threadHandle = threadHandle; threads.push_back(threadInfo); } } } while (Thread32Next(threadSnapshot, &threadEntry)); } // 关闭快照句柄 CloseHandle(threadSnapshot); return threads; } int main() { // 获取当前所有线程信息 std::vector<ThreadInfo> threads = GetAllThreadsInfo(); // 打印线程信息 for (const ThreadInfo& thread : threads) { std::cout << "Thread ID: " << thread.threadId << std::endl; // 可以通过调用GetThreadTimes等API获取更多线程信息 // ... // 关闭线程句柄 CloseHandle(thread.threadHandle); } return 0; } ``` 这个示例代码使用了Windows操作系统的API来获取线程信息,如果你使用的是其他操作系统,你可能需要使用不同的API来实现相同的功能。请注意,这只是一个基本示例,你可以根据自己的需求进行扩展和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值