📄 systeminfo.cpp
字号:
FillRect(hdc,&rc,CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT)));
}
int i=0,j=0,iSelect=0;
PROGRAMDATA *pTemp = m_pApplicationMarked->GetIndexData(m_dwAppPage<<3);//m_pApplication->m_pDataFirst;
while(pTemp)
{
if(i>7)
break;
//if(pTemp->bSelected)
{
DrawIcon(hdc,3+i*22,75+j*22,pTemp->hProcessIcon);
iSelect++;
i++;
}
pTemp=pTemp->pNext;
}
if(iSelect==0)
{
rc.left=0;rc.top=73;
rc.bottom = 95;rc.right=200;
SetBkMode(hdc,TRANSPARENT);
hFontOld = (HFONT)SelectObject(hdc,m_hBoldTodayFont);
SetTextColor(hdc,RGB(255,255,255));
DrawText(hdc,L"Tap here to set applications link",-1,&rc,DT_LEFT|DT_VCENTER);
SelectObject(hdc,hFontOld);
}
}
else
{
rc.left=0;rc.top=73;
rc.bottom = 95;rc.right=200;
SetBkMode(hdc,TRANSPARENT);
hFontOld = (HFONT)SelectObject(hdc,m_hBoldTodayFont);
SetTextColor(hdc,RGB(255,255,255));
DrawText(hdc,L"Tap here to set applications link",-1,&rc,DT_LEFT|DT_VCENTER);
SelectObject(hdc,hFontOld);
}
}
else
{
rc.left=0;rc.top=73;
rc.bottom = 95;rc.right=200;
SetBkMode(hdc,TRANSPARENT);
hFontOld = (HFONT)SelectObject(hdc,m_hBoldTodayFont);
SetTextColor(hdc,RGB(255,255,255));
DrawText(hdc,L"Tap here to set applications link",-1,&rc,DT_LEFT|DT_VCENTER);
SelectObject(hdc,hFontOld);
ShowWindow(GetDlgItem(hWnd,ID_APP_LEFT),SW_HIDE);
ShowWindow(GetDlgItem(hWnd,ID_APP_RIGHT),SW_HIDE);
}
}
void PaintPage4(HWND hWnd,HDC hdc)
{
//here can add some tasks and appointment
HFONT hFontOld;
SetBkMode(hdc,TRANSPARENT);
hFontOld = (HFONT)SelectObject(hdc,m_hBoldTodayFont);
SetTextColor(hdc,RGB(255,255,255));
RECT rc;
TCHAR szTitle[256];
GetTaskAndAppointment();
if(m_pPoom)
{
if(m_pPoom->m_dwDataCount<=TASK_MAX)
{
ShowWindow(GetDlgItem(hWnd,ID_TASK_UP),SW_HIDE);
ShowWindow(GetDlgItem(hWnd,ID_TASK_DOWN),SW_HIDE);
m_dwPage=0;
}
else
{
ShowWindow(GetDlgItem(hWnd,ID_TASK_UP),SW_SHOW);
ShowWindow(GetDlgItem(hWnd,ID_TASK_DOWN),SW_SHOW);
if(m_dwPage>0)
EnableWindow(GetDlgItem(hWnd,ID_TASK_UP),TRUE);
if(m_dwPage<(m_pPoom->m_dwDataCount>>2)) //<m_pPoom->m_dwDataCount/4
EnableWindow(GetDlgItem(hWnd,ID_TASK_DOWN),TRUE);
}
if(m_pPoom->m_dwDataCount>0)
{
if(m_dwTaskIndex!=-1)
{
GetClientRect(hWnd,&rc);
rc.right-=18;
rc.top=m_dwTaskRow*24;
rc.bottom=rc.top+24;
FillRect(hdc,&rc,CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT)));
}
POOMDATA *pTemp = m_pPoom->GetIndexData(m_dwPage<<2);//m_pPoom->m_pDataFirst;
GetClientRect(hWnd,&rc);
int i = 0;
while(pTemp)
{
if(i*24>=96)
{
break;
}
rc.top=i*24;rc.bottom=rc.top+24;
if(pTemp->pTask)
{
wsprintf(szTitle,L"Task %d: %s",pTemp->dwPoomId,pTemp->pTask->szSubject);
SelectObject(hdc,m_hBoldTodayFont);
//rc.left=0;
DrawText(hdc,szTitle,-1,&rc,DT_LEFT|DT_TOP);
wsprintf(szTitle,L"Due: %d/%d/%d",
pTemp->pTask->sysDueDate.wYear,
pTemp->pTask->sysDueDate.wMonth,
pTemp->pTask->sysDueDate.wDay);
SelectObject(hdc,m_hNormalTodayFont);
//rc.left=5;
DrawText(hdc,szTitle,-1,&rc,DT_LEFT|DT_BOTTOM);
}
if(pTemp->pAppointment)
{
wsprintf(szTitle,L"Appointment %d: %s",pTemp->dwPoomId,pTemp->pAppointment->szSubject);
SelectObject(hdc,m_hBoldTodayFont);
//rc.left=0;
DrawText(hdc,szTitle,-1,&rc,DT_LEFT|DT_TOP);
wsprintf(szTitle,L"Date: %d/%d/%d(%d:%d)~%d/%d/%d(%d:%d)",
pTemp->pAppointment->sysStartDate.wYear,
pTemp->pAppointment->sysStartDate.wMonth,
pTemp->pAppointment->sysStartDate.wDay,
pTemp->pAppointment->sysStartDate.wHour,
pTemp->pAppointment->sysStartDate.wMinute,
pTemp->pAppointment->sysEndDate.wYear,
pTemp->pAppointment->sysEndDate.wMonth,
pTemp->pAppointment->sysEndDate.wDay,
pTemp->pAppointment->sysEndDate.wHour,
pTemp->pAppointment->sysStartDate.wMinute);
SelectObject(hdc,m_hNormalTodayFont);
//rc.left=5;
DrawText(hdc,szTitle,-1,&rc,DT_LEFT|DT_BOTTOM);
}
pTemp = pTemp->pNext;
i++;
}
}
else
{
rc.left=0;rc.top=0;
rc.bottom = 21;rc.right=200;
SelectObject(hdc,m_hBoldTodayFont);
DrawText(hdc,L"No tasks and appoinments",-1,&rc,DT_LEFT|DT_VCENTER);
m_dwTaskIndex = -1;
}
}
SelectObject(hdc,hFontOld);
}
void GetProgramMemory(LPDWORD dwTotal,LPDWORD dwAvaiable)
{
MEMORYSTATUS memStatus;
memset(&memStatus,0x00,sizeof(MEMORYSTATUS));
memStatus.dwLength = sizeof(MEMORYSTATUS);
GlobalMemoryStatus(&memStatus);
*dwTotal = memStatus.dwTotalPhys;
*dwAvaiable = memStatus.dwAvailPhys;
}
BOOL GetStorageMemory(LPDWORD dwTotal,LPDWORD dwAvaiable)
{
ULARGE_INTEGER AvailMem,TotalMem;
if(GetDiskFreeSpaceEx(NULL,&AvailMem,&TotalMem,NULL))
{
*dwTotal = TotalMem.LowPart;
*dwAvaiable = AvailMem.LowPart;
return TRUE;
}
return FALSE;
}
BOOL GetSDCardMemory(LPDWORD dwTotal,LPDWORD dwAvaiable)
{
ULARGE_INTEGER AvailMem,TotalMem;
WIN32_FIND_DATA SDCardData;
TCHAR szSDCard[MAX_PATH];
HANDLE hSDCard = FindFirstFlashCard(&SDCardData);
if(hSDCard != INVALID_HANDLE_VALUE)
{
wsprintf(szSDCard,L"\\%s",SDCardData.cFileName);
FindClose(hSDCard);
if(!lstrcmp(SDCardData.cFileName,L""))
return FALSE;
if(GetDiskFreeSpaceEx(szSDCard,&AvailMem,&TotalMem,NULL))
{
*dwTotal = TotalMem.LowPart;
*dwAvaiable = AvailMem.LowPart;
return TRUE;
}
}
return FALSE;
}
BOOL GetBacklight(LPDWORD dwLevel)
{
return FALSE;
}
BOOL GetBattery(LPDWORD dwPercent)
{
SYSTEM_POWER_STATUS_EX powerEx;
if(GetSystemPowerStatusEx(&powerEx,TRUE))
{
*dwPercent = powerEx.BatteryLifePercent;
return TRUE;
}
return FALSE;
}
void OnChildrenTimer(HWND hWnd,WPARAM wParam)
{
if((DWORD)wParam == ID_PAGE2_TIMER)
{/*
RECT rc;
GetClientRect(hWnd,&rc);
rc.left = 130;rc.top = 75;
rc.bottom = 88;
InvalidateRect(hWnd,&rc,TRUE);
UpdateWindow(hWnd);*/
}
else if((DWORD)wParam == ID_PAGE3_TIMER)
{
//GetRunningPrograms();
}
else if((DWORD)wParam == ID_CLOCK_TIMER)
{
//GetRunningPrograms();
InvalidateRect(hWnd,NULL,TRUE);
UpdateWindow(hWnd);
}
}
BOOL GetLed(LPDWORD dwLed)
{
return FALSE;
}
BOOL GetVibrate(LPDWORD dwVibrate)
{
return FALSE;
}
void GetRunningPrograms()
{
if(m_pList)
{
delete m_pList;
m_pList = NULL;
}
m_pList = new CProgramList();
EnumWindows((WNDENUMPROC) EnumWindowsProc, NULL );
}
BOOL CALLBACK EnumWindowsProc(HWND hWnd,LPARAM lParam)
{
if(IsWindowVisible(hWnd))
{
TCHAR szCaption[MAX_LOADSTRING];
int iCount = GetWindowText(hWnd,szCaption,MAX_LOADSTRING);
if(iCount)
{
DWORD dwProcessId;
GetWindowThreadProcessId(hWnd,&dwProcessId);
HMODULE hModule = (HMODULE)OpenProcess( PROCESS_ALL_ACCESS,FALSE,dwProcessId);
if(hModule)
{
TCHAR szPath[MAX_PATH];
GetModuleFileName(hModule,szPath,MAX_PATH);
CloseHandle(hModule);
//ingore shell32.exe/phone ap/serch ap
if( lstrcmp(szPath,L"\\Windows\\shell32.exe") && lstrcmp(szPath,L"\\Windows\\cprog.exe")
&& lstrcmp(szPath,L"\\Windows\\shfind.exe") )
{
SHFILEINFO shFileInfo;
SHGetFileInfo(szPath,NULL,&shFileInfo,sizeof(SHFILEINFO),
SHGFI_DISPLAYNAME | SHGFI_ICON | SHGFI_SMALLICON | SHGFI_TYPENAME |
SHGFI_ATTRIBUTES | SHGFI_SYSICONINDEX);
// if(!m_pList->DataExistIn(szCaption))
{
PROGRAMDATA *pData = (PROGRAMDATA*)malloc(sizeof(PROGRAMDATA));
lstrcpy(pData->szProcessName,szCaption);
pData->dwProcessId = dwProcessId;
pData->hProcessWnd = hWnd;
if(lstrcmp(szCaption,L"Contacts")==0)
{
pData->hProcessIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_CONTACTS));
}
else if(lstrcmp(szCaption,L"Tasks")==0)
{
pData->hProcessIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_TASKS));
}
else if(lstrcmp(szCaption,L"Calendar")==0)
{
pData->hProcessIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_CALENDAR));
}
else
{
pData->hProcessIcon = shFileInfo.hIcon;
}
if(!m_pList->AddDataToList(pData))
MessageBox(NULL,L"List programs error",L"Error",MB_OK);
}
}
}
}
}
return TRUE;
}
void GetDateTime(LPSYSTEMTIME localTime)
{
GetLocalTime(localTime);
}
void OnHandlePage4Down(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
HMENU hMenuPopup;
RECT rc;
RECT rcWork;
GetClientRect(hWnd,&rc);
SystemParametersInfo(SPI_GETWORKAREA, NULL, &rcWork, FALSE);
POINT ptPos;
ptPos.x = LOWORD(lParam);
ptPos.y = HIWORD(lParam);
m_dwTaskIndex = GetTaskIndex(ptPos,&m_dwTaskRow);
if(m_dwTaskIndex+m_dwPage*4>= m_pPoom->m_dwDataCount)
m_dwTaskIndex = -1;
if(m_dwTaskIndex!=-1)
{
rc.top = m_dwTaskRow*24;
rc.bottom = rc.top+24;
m_hTaskRgn = CreateRectRgnIndirect(&rc);
CombineRgn(m_hOldTaskRgn,m_hOldTaskRgn,m_hTaskRgn,RGN_OR);
InvalidateRgn(hWnd,m_hOldTaskRgn,TRUE);
UpdateWindow(hWnd);
DeleteObject(m_hOldTaskRgn);
DeleteObject(m_hTaskRgn);
m_hOldTaskRgn = CreateRectRgnIndirect(&rc);
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_TASKAPP_DETAIL,NULL);
ptPos.y = (m_dwTaskRow+1)*24;
ClientToScreen(hWnd,&ptPos);
TrackPopupMenu(hMenuPopup,TPM_RIGHTALIGN|TPM_BOTTOMALIGN,rcWork.right,ptPos.y,0,hWnd,NULL);
DestroyMenu(hMenuPopup);
}
}
void OnHandlePage1Down(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
PROCESS_INFORMATION pi;
memset(&pi, 0, sizeof(pi));
RECT rc;
GetClientRect(hWnd,&rc);
rc.bottom = 15;rc.right >>=1;
POINT ptPos;
ptPos.x = LOWORD(lParam);
ptPos.y = HIWORD(lParam);
if(PtInRect(&rc,ptPos))
{
if (!CreateProcess(L"\\windows\\ctlpnl.exe", L"cplmain.cpl,2,0", NULL, NULL, FALSE, 0, NULL, NULL, NULL, &pi))
{
MessageBox(hWnd, L"Owner info can not be opened.", L"Error", MB_OK|MB_ICONERROR);
}
}
}
void OnHandleChildrenDown(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
HMENU hMenuPopup;
RECT rc;
POINT ptPos;
ptPos.x = LOWORD(lParam);
ptPos.y = HIWORD(lParam);
//ScreenToClient(hWnd,&ptPos);
m_dwIndex = GetProgramIndex(ptPos,&m_dwRow,&m_dwCol);
if(m_dwIndex!=-1)
{
rc.left = m_dwRow*22;
rc.top = m_dwCol*22;
rc.right = rc.left+22;
rc.bottom = rc.top+22;
m_hNewRgn = CreateRectRgnIndirect(&rc);
CombineRgn(m_hOldRgn,m_hOldRgn,m_hNewRgn,RGN_OR);
InvalidateRgn(hWnd,m_hOldRgn,TRUE);
UpdateWindow(hWnd);
DeleteObject(m_hOldRgn);
DeleteObject(m_hNewRgn);
m_hOldRgn = CreateRectRgnIndirect(&rc);
//create popup menu
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPMENU_NAME,NULL);
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPMENU_ACTIVE,NULL);
AppendMenu(hMenuPopup, MF_SEPARATOR,ID_POPUPMENU_SEP,NULL);
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPMENU_STOP,NULL);
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPMENU_STOPALL,NULL);
ClientToScreen(hWnd,&ptPos);
TrackPopupMenu(hMenuPopup,TPM_LEFTALIGN|TPM_TOPALIGN,ptPos.x,ptPos.y,0,hWnd,NULL);
DestroyMenu(hMenuPopup);
}
else
{
GetClientRect(hWnd,&rc);
rc.top = 73;
if(PtInRect(&rc,ptPos))
{
if(m_pApplicationMarked)
{
if(m_pApplicationMarked->m_dwDataCount>0)
{
m_dwAppIndex = GetApplicationIndex(ptPos,&m_dwAppRow,&m_dwAppCol);
if(m_dwAppIndex!=-1)
{
rc.left = m_dwAppRow*22;
rc.top = m_dwAppCol*22+74;
rc.right = rc.left+22;
rc.bottom = rc.top+20;
m_hNewAppRgn = CreateRectRgnIndirect(&rc);
CombineRgn(m_hOldAppRgn,m_hOldAppRgn,m_hNewAppRgn,RGN_OR);
InvalidateRgn(hWnd,m_hOldAppRgn,TRUE);
UpdateWindow(hWnd);
DeleteObject(m_hOldAppRgn);
DeleteObject(m_hNewAppRgn);
m_hOldAppRgn = CreateRectRgnIndirect(&rc);
//create popup menu
hMenuPopup = CreatePopupMenu();
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPAPP_NAME,NULL);
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPAPP_RUN,NULL);
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPAPP_REMOVE,NULL);
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPAPP_REMOVEALL,NULL);
AppendMenu(hMenuPopup, MF_SEPARATOR,ID_POPUPAPP_SEP,NULL);
AppendMenu(hMenuPopup, MF_OWNERDRAW,ID_POPUPAPP_ADD,NULL);
ClientToScreen(hWnd,&ptPos);
TrackPopupMenu(hMenuPopup,TPM_LEFTALIGN|TPM_TOPALIGN,ptPos.x,ptPos.y,0,hWnd,NULL);
DestroyMenu(hMenuPopup);
}
}
else
{
//SetCursor(LoadCursor(NULL, IDC_WAIT));
DialogBox(g_hInstance, (LPCTSTR)IDD_APPLICATION, hWnd,ApplicationProc);
//SetCursor(NULL);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -