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

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

}

别忘了添加对应头文件

1.使用open或者fopen打开文件获取文件文件句柄。

2.如果是c 语言程序,可以使用fread将文件内容读取到内存里,然后通过\n来取到每一行,然后使用sscanf来获取浮点数;

如果是c++,可以直接使用getline函数获取一行数据,然后再调用sscanf来获取浮点数

3.处理完了关闭文件

如果是写文件,open打开,注意标志位设置成追加模式,然后按照格式组织好数据,可以使用sprintf来格式化数据到内存里,然后调用fwrite写入文件。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12040926.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存