VC如何获得当前线程的ID

VC如何获得当前线程的ID,第1张

获取当前进程的ID很简单,一种方法是调用GetCurrentThreadId()函数即可;

还有一处更简单的哈,就是在你创建进程的时候就知道了:如

m_hThread = ::CreateThread(NULL, 0, MyThreadProc, this, 0, &m_threadID);//最后一个参数就是线程ID

另外,你想出现的是交错的顺序也很简单,就是做好互斥工作就是了,在线程的相应位置调用WaitForSingleObject();不要忘了解锁即可,我是用SetEvent();最好后面加上Sleep(10);这样看到的效果就更明显了!

//获取对应进程名的ID

DWORD GetSpecifiedProcessId(const char pszProcessName)

{

DWORD id;

//获得系统快照句柄 (通俗的讲, 就是得到当前的所有进程)

HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0) ;

PROCESSENTRY32 pInfo; //用于保存进程信息的一个数据结构

pInfodwSize = sizeof(pInfo);

//从快照中获取进程列表

Process32First(hSnapShot, &pInfo) ; //从第一个进程开始循环

do

{

//这里的 pszProcessName 为你的进程名称

if(strcmp(strlwr(_strdup(pInfoszExeFile)), pszProcessName) == 0)

{

id = pInfoth32ProcessID ;

break ;

}

}while(Process32Next(hSnapShot, &pInfo) != FALSE);

return id; //id 就是你要的进程PID 了

}

这个代码是我从网上复制过来的 但是注释是我给加的

以后别弄个0 分放这里 真想扁你

vc 使用 wmi获取CPU温度

电池温度,貌似这个在普通PC上没有,笔记本上也应该需要特殊的厂家驱动支持,首先在硬件上要有温度探头,这个很多笔记本是没有的。

wmi、注册表、shell等编程方法,可以获取到和windows设备管理器相同的信息,如果设备管理器没有,标准编程方法是获取不到的。

鲁大师的检测获取,可不是简单代码可以完成的,如果不是商业应用,建议放弃,太麻烦了。这个首先,需要做一个r0级别的驱动程序,才可以直接获取硬件信息,然后窗口程序和驱动程序进行信息交互。(对未识别硬件的简单识别或SSD这样的简单判断,这样做就可以)

但获取后,实际只是一组标识数据,是无法直接确定品牌和版本的,也无法直接判断ssd的参数和品牌。要像鲁大师那样详细的驱动信息,实际是需要一个非常详细的硬件信息对比库,将r0获取的硬件标识数据和数据库中每个产品的信息作对比,尤其是山寨产品,数据标识混乱,还需要一个智能匹配逻辑,根据周边信息作综合判定。这可不是一个简单的事情,可以说是鲁大师的“发家”根本。

SYSTEM_INFO info;

GetSystemInfo(&info);

return infodwNumberOfProcessors;

用这个数据对比一下吧。其实这个数据获取的是一个环境变量,有windows的管理器获取的。

以上就是关于VC如何获得当前线程的ID全部的内容,包括:VC如何获得当前线程的ID、VC 如何得到进程的ID号、vc 获取 cpu、电池的温度。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9330974.html

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

发表评论

登录后才能评论

评论列表(0条)

保存