获取当前进程的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、电池的温度。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)