VC++根据explorer.exe进程检测用户是否已登录
来源:易贤网 阅读:1370 次 日期:2015-02-27 11:02:31
温馨提示:易贤网小编为您整理了“VC++根据explorer.exe进程检测用户是否已登录”,方便广大网友查阅!

下面来看一个VC++根据explorer.exe进程检测用户是否已登录,希望例子能帮助到各位。

代码如下

void CALLBACK timeCall(UINT timeid, UINT umsg, DWORD_PTR dwUser, DWORD dw1, DWORD_PTR dw2)

{

DWORD dwSessionId = WTSGetActiveConsoleSessionId(); //获取控制台的session

HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //为创建环境快照

if (hSnap == INVALID_HANDLE_VALUE)

return;

//遍历快照,通过快照的 procEntry.szExeFile 获取应用程序名字,从而取得相应的PID

PROCESSENTRY32 procEntry;

procEntry.dwSize = sizeof(PROCESSENTRY32);

Process32First(hSnap, &procEntry);

DWORD dwExplorerPid = -1;

do

{

if (strcmp(procEntry.szExeFile, "explorer.exe") == 0)

{

DWORD dwExplorerSessId = 0;

if (ProcessIdToSessionId(procEntry.th32ProcessID, &dwExplorerSessId) && dwExplorerSessId == dwSessionId)

{

dwExplorerPid = procEntry.th32ProcessID;

break;

}

}

} while (Process32Next(hSnap, &procEntry));

LOG_INFO("检测用户是否已经登录 : %s", (dwExplorerPid == -1) ? "未登录" : "已经登录");

if (dwExplorerPid != -1)

{

//已登录

DoSomething();

}

}

更多信息请查看IT技术专栏

更多信息请查看网络编程
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 新媒体/短视频平台 | 手机站点

版权所有:易贤网