c语言如何获得当前运行的控制台程序的句柄

Python014

c语言如何获得当前运行的控制台程序的句柄,第1张

句柄(HANDLE)是WINDOWS环境下特有的窗口程序运行的识别号,而C语言是DOS环境下运行的代码,在DOS环境下,没有句柄的概念,理论上说,新时期环境下的新产物,不可能在旧环境下找到,就像要求达尔文用电子邮件给出版社发送文稿一样荒诞不经,即使在控制台上运行的C程序可以通过WINDOWS任务管理器看到PID,但每次运行都不相同,那么有如何使用呢?

DWORD PID

PID = GetProcessPID(L"test.exe")

//获取进程pid函数

DWORD GetProcessPID(LPCTSTR pName)

{

HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)

if (INVALID_HANDLE_VALUE == hSnapshot) {

return NULL

}

PROCESSENTRY32 pe = { sizeof(pe) }

BOOL fOk

for (fOk = Process32First(hSnapshot, &pe)fOkfOk = Process32Next(hSnapshot, &pe)){

if (!_tcsicmp(pe.szExeFile, pName)) {

CloseHandle(hSnapshot)

return pe.th32ProcessID

}

}

return NULL

}

//由进程pid获取进程句柄,置顶

HWND hh = GetProcessTopWindows(PID)

HWND GetProcessTopWindows(DWORD dwPID){

count = 0

EnumWindows((WNDENUMPROC)EnumWndProc, (LPARAM)dwPID)

if(count >0) {

//cout <<"窗口句柄是:" <<nhWnd[count -1] <<endl//输出句柄,可用spy++工具核对

return (nhWnd[count -1])

}

return NULL

}

别忘了添加对应头文件。