📄 systeminfo.cpp
字号:
break;
case 1:
MoveToEx(hdc,24,0,NULL);
LineTo(hdc,24,24);
MoveToEx(hdc,24,47,NULL);
LineTo(hdc,24,96);
break;
case 2:
MoveToEx(hdc,24,0,NULL);
LineTo(hdc,24,48);
MoveToEx(hdc,24,71,NULL);
LineTo(hdc,24,96);
break;
case 3:
MoveToEx(hdc,24,0,NULL);
LineTo(hdc,24,72);
break;
default:
MoveToEx(hdc,24,0,NULL);
LineTo(hdc,24,96);
break;
}
DeleteObject(hPen);
SelectObject(hdc,hPenOld);
for(int i=0;i<4;i++)
ShowWindow(m_hChildren[i],SW_HIDE);
ShowWindow(m_hChildren[m_dwCurrentForm],SW_SHOW);
}
HWND AddButtons(HWND hWnd,int ix,int iy,int iWidth,int iHeight,UINT uiID,BOOL bOwnerDraw)
{
RECT rect;
SystemParametersInfo(SPI_GETWORKAREA, NULL, &rect, FALSE);
DWORD dwFlags = WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON;
if(bOwnerDraw)
dwFlags |= BS_OWNERDRAW;
HWND hButton = CreateWindow( L"Button", L"",
dwFlags,
ix,
iy,
iWidth,
iHeight,
hWnd,
(HMENU) uiID,
g_hInstance, NULL );
/*
if(m_fOldProc = (WNDPROC)GetWindowLong(hButton, GWL_WNDPROC))
{
if(!SetWindowLong(hButton, GWL_WNDPROC, (LONG)ButtonSubProc))
{
return NULL;
}
}
*/
return hButton;
}
LRESULT CALLBACK ButtonSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
LRESULT lResult;
switch(uMsg)
{
case WM_ERASEBKGND:
// Get the default response
lResult = CallWindowProc(m_fOldProc, hwnd, uMsg, wParam, lParam);
break;
default:
// respond to the messages with the default action
lResult = CallWindowProc(m_fOldProc, hwnd, uMsg, wParam, lParam);
break;
}
return lResult;
}
void OnMainCreate(HWND hWnd)
{
RECT rect;
SystemParametersInfo(SPI_GETWORKAREA, NULL, &rect, FALSE);
RegisterChildrenClass();
//GetClientRect(hWnd,&rect);
int i=0;
for(i = 0;i<4;i++)
AddButtons(hWnd,0,i*24,22,22,ID_BASE_COMMAND+i,TRUE);
for(i=0;i<4;i++)
{
m_hChildren[i]=AddChildrenWindows(hWnd,29,0,rect.right-29,95);
if(i==1)
{
SetTimer(m_hChildren[i],ID_PAGE2_TIMER,1000,NULL);
hUpdateRgn = CreateRectRgn(26,6,15,56);
hCombineRgn = CreateRectRgn(26,30,39,56);
CombineRgn(hUpdateRgn,hUpdateRgn,hCombineRgn,RGN_OR);
hCombineRgn = CreateRectRgn(26,54,63,56);
CombineRgn(hUpdateRgn,hUpdateRgn,hCombineRgn,RGN_OR);
hCombineRgn = CreateRectRgn(26,78,87,56);
CombineRgn(hUpdateRgn,hUpdateRgn,hCombineRgn,RGN_OR);
hCombineRgn = CreateRectRgn(92,6,15,122);
CombineRgn(hUpdateRgn,hUpdateRgn,hCombineRgn,RGN_OR);
}
if(i==2)
{
SetTimer(m_hChildren[i],ID_PAGE3_TIMER,1000,NULL);
//GetRunningPrograms();
m_hOldRgn = CreateRectRgn(0,0,0,0);
m_hOldAppRgn = CreateRectRgn(0,0,0,0);
}
if(i==3)
{
m_hOldTaskRgn = CreateRectRgn(0,0,0,0);
}
}
for(i = 0;i<3;i++)
AddButtons(m_hChildren[0],19+(i<<6),48,32,32,ID_DEVICE_COMMAND+i,TRUE);
// m_hBmpClock = (HBITMAP)LoadBitmap(g_hInstance,MAKEINTRESOURCE(IDB_CLOCK));
// m_hIconClock = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_CLOCK));
m_hClock = AddChildrenWindows(m_hChildren[1],rect.right-29-64,28,48,64);
SetTimer(m_hClock,ID_CLOCK_TIMER,1000,NULL);
AddButtons(m_hChildren[2],rect.right-29-16,76,16,16,ID_APP_RIGHT,TRUE);
AddButtons(m_hChildren[2],rect.right-29-32,76,16,16,ID_APP_LEFT,TRUE);
AddButtons(m_hChildren[3],rect.right-29-18,1,16,16,ID_TASK_UP,TRUE);
AddButtons(m_hChildren[3],rect.right-29-18,78,16,16,ID_TASK_DOWN,TRUE);
AddButtons(m_hChildren[3],rect.right-29-18,20,16,16,ID_TASK_ADD,TRUE);
AddButtons(m_hChildren[3],rect.right-29-18,39,16,16,ID_TASK_DELETE,TRUE);
AddButtons(m_hChildren[3],rect.right-29-18,58,16,16,ID_TASK_EDIT,TRUE);
//AddListView(m_hChildren[3],0,0,rect.right-29-48,95,ID_LISTVIEW,TRUE);
}
HWND AddListView(HWND hWnd,int ix,int iy,int iWidth,int iHeight,UINT uiID,BOOL bOwnerDraw)
{
HWND hwndRet;
DWORD dwFlags;
dwFlags = WS_CHILD | WS_VISIBLE | LVS_REPORT | LVS_SINGLESEL | LVS_NOCOLUMNHEADER;
if(bOwnerDraw)
{
dwFlags |= LVS_OWNERDRAWFIXED;
dwFlags |= LVS_OWNERDATA;
}
//dwFlags |=
hwndRet = CreateWindow (WC_LISTVIEW,
NULL,dwFlags,
ix, iy, iWidth, iHeight,
hWnd,
(HMENU) uiID,
g_hInstance,
0);
ListView_SetExtendedListViewStyle(hwndRet,LVS_EX_FULLROWSELECT|LVS_EX_NOHSCROLL);
// TODAYDRAWWATERMARKINFO dwi;
/*
dwi.hdc = GetWindowDC(hwndRet);
GetClientRect(hwndRet, &dwi.rc);
dwi.hwnd = hwndRet;
SendMessage(g_hWndParent,TODAYM_DRAWWATERMARK,0,(LPARAM)&dwi);
ReleaseDC(hwndRet,dwi.hdc);*/
LV_COLUMN lvColumn;
lvColumn.mask = LVCF_WIDTH;
lvColumn.cx = iWidth;
ListView_InsertColumn(hwndRet, 0, &lvColumn);
ListView_SetItemCountEx(hwndRet,7,LVSICF_NOINVALIDATEALL);
return hwndRet;
}
HWND AddChildrenWindows(HWND hWnd,int ix,int iy,int iWidth,int iHeight,UINT uiID)
{
HWND hChildrenWnd;
hChildrenWnd = CreateWindow(TEXT("ChildrenToday"), L"",
WS_VISIBLE | WS_CHILD,
ix, iy, iWidth, iHeight,
hWnd, (HMENU)uiID, g_hInstance, NULL);
return hChildrenWnd;
}
BOOL RegisterChildrenClass()
{
WNDCLASS wc;
//Create our window class
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC) ChildrenWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = g_hInstance;
wc.hIcon = 0;
wc.hCursor = 0;
wc.hbrBackground = (HBRUSH) COLOR_BACKGROUND;
wc.lpszMenuName = 0;
wc.lpszClassName = TEXT("ChildrenToday");
if(!RegisterClass(&wc))
return FALSE;
return TRUE;
}
LRESULT CALLBACK ChildrenWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
TODAYDRAWWATERMARKINFO dwi;
DWORD dwIndex;
HICON hIcon;
HBRUSH hbrSEL;
PROGRAMDATA *pTemp;
RECT rcItem;
switch (message)
{
case WM_TIMER:
OnChildrenTimer(hWnd,wParam);
break;
case WM_CREATE:
OnChildrenCreate(hWnd);
break;
case WM_ERASEBKGND:
//We return true here since we handle our own background painting.
hdc = (HDC)wParam;
dwi.hdc = hdc;
GetClientRect(hWnd, &dwi.rc);
dwi.hwnd = hWnd;
SendMessage(g_hWndParent, TODAYM_DRAWWATERMARK, 0,(LPARAM)&dwi);
return TRUE;
case WM_PAINT:
//Paint like you would in any other application.
hdc = BeginPaint(hWnd, &ps);
OnChildrenPaint(hWnd,hdc);
EndPaint(hWnd, &ps);
break;
case WM_NOTIFY:
OnChildrenNotify(hWnd,wParam,lParam);
break;
case WM_CONTEXTMENU:
OnChildrenContext(hWnd,wParam,lParam);
break;
case WM_DESTROY:
break;
case WM_SETTINGCHANGE:
if( SETTINGCHANGE_RESET == wParam)
{
}
break;
case WM_SIZE:
break;
case WM_DRAWITEM:
LPDRAWITEMSTRUCT lpdis;
lpdis = (LPDRAWITEMSTRUCT)lParam;
if (lpdis->CtlType == ODT_BUTTON)
{
dwi.hdc = lpdis->hDC;
GetClientRect(lpdis->hwndItem, &dwi.rc);
dwi.hwnd = lpdis->hwndItem;
SendMessage(g_hWndParent, TODAYM_DRAWWATERMARK, 0,(LPARAM)&dwi);
if(lpdis->CtlID == ID_TASK_UP || lpdis->CtlID == ID_TASK_DOWN ||
lpdis->CtlID == ID_TASK_ADD||lpdis->CtlID == ID_TASK_DELETE||
lpdis->CtlID == ID_TASK_EDIT)
{
dwIndex = lpdis->CtlID - ID_TASK_UP;
if ((lpdis->itemAction | ODA_SELECT) && (lpdis->itemState & ODS_SELECTED))
{
FillRect(lpdis->hDC,&lpdis->rcItem,CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT)));
hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_UP+dwIndex));
}
else
{
hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_UP+dwIndex));
}
}
else if(lpdis->CtlID == ID_APP_LEFT||lpdis->CtlID == ID_APP_RIGHT)
{
dwIndex = lpdis->CtlID - ID_APP_LEFT;
if ((lpdis->itemAction | ODA_SELECT) && (lpdis->itemState & ODS_SELECTED))
{
FillRect(lpdis->hDC,&lpdis->rcItem,CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT)));
hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_APP_LEFT+dwIndex));
}
else
{
hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_APP_LEFT+dwIndex));
}
}
else
{
dwIndex = lpdis->CtlID - ID_DEVICE_COMMAND;
if ((lpdis->itemAction | ODA_SELECT) && (lpdis->itemState & ODS_SELECTED))
hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_SUSPEND_DOWN+dwIndex));
else
hIcon = LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_SUSPEND+dwIndex));
}
DrawIcon(lpdis->hDC,0,0,hIcon);
if(hIcon)
DestroyIcon(hIcon);
}
else if (lpdis->CtlType == ODT_LISTVIEW)
{
hdc = lpdis->hDC;
hbrSEL = CreateSolidBrush (GetSysColor(COLOR_HIGHLIGHT));
if ((lpdis->itemAction | ODA_SELECT) && (lpdis->itemState & ODS_SELECTED))
{
FillRect(hdc, &lpdis->rcItem,hbrSEL);
DrawText(hdc,L"fdfd",-1,&lpdis->rcItem,DT_CENTER);
}
else
DrawText(hdc,L"fdfd",-1,&lpdis->rcItem,DT_CENTER);
DeleteObject (hbrSEL);
}
else
{
OnHandMenuDrawItem(hWnd,lpdis);
}
break;
case WM_MEASUREITEM:
LPMEASUREITEMSTRUCT lpmi;
lpmi = (LPMEASUREITEMSTRUCT)lParam;
if (lpmi->CtlType == ODT_BUTTON)
{
lpmi->itemWidth = BUTTON_WIDTH;
lpmi->itemHeight = BUTTON_HEIGHT;
}
else if (lpmi->CtlType == ODT_LISTVIEW)
{
lpmi->itemHeight = 24;
}
else
{
if(lpmi->itemID == ID_TASKAPP_DETAIL)
{
SystemParametersInfo(SPI_GETWORKAREA, NULL, &rcItem, FALSE);
lpmi->itemWidth = rcItem.right;
lpmi->itemHeight = 11;
}
else
{
lpmi->itemWidth = 100;
lpmi->itemHeight = 18;
}
}
return (INT_PTR)TRUE;
break;
case WM_COMMAND:
OnChildrenCommand(hWnd,wParam,lParam);
break;
case WM_LBUTTONDOWN:
if(hWnd == m_hChildren[2])
OnHandleChildrenDown(hWnd,wParam,lParam);
else if(hWnd == m_hChildren[3])
OnHandlePage4Down(hWnd,wParam,lParam);
else if(hWnd == m_hChildren[0])
OnHandlePage1Down(hWnd,wParam,lParam);
else if(hWnd == m_hClock)
{
OnHandleClockDown(hWnd,wParam,lParam);
}
else
;
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
void OnChildrenPaint(HWND hWnd,HDC hdc)
{
if(hWnd == m_hChildren[0])
PaintPage1(hWnd,hdc);
else if(hWnd == m_hChildren[1])
PaintPage2(hWnd,hdc);
else if(hWnd == m_hChildren[2])
PaintPage3(hWnd,hdc);
else if(hWnd == m_hChildren[3])
PaintPage4(hWnd,hdc);
else if(hWnd == m_hClock)
PaintClock(hWnd,hdc);
}
void OnHandleCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
DWORD dwIndex = LOWORD(wParam) - ID_BASE_COMMAND;
//ShowWindow(m_hChildren[dwIndex],SW_SHOW);
switch (dwIndex)
{
case 0:
//ShowWindow(m_hChildren[1],SW_HIDE);
//ShowWindow(m_hChildren[2],SW_HIDE);
//ShowWindow(m_hChildren[3],SW_HIDE);
m_dwCurrentForm = 0;
break;
case 1:
//ShowWindow(m_hChildren[0],SW_HIDE);
//ShowWindow(m_hChildren[2],SW_HIDE);
//ShowWindow(m_hChildren[3],SW_HIDE);
m_dwCurrentForm = 1;
break;
case 2:
// ShowWindow(m_hChildren[0],SW_HIDE);
// ShowWindow(m_hChildren[1],SW_HIDE);
// ShowWindow(m_hChildren[3],SW_HIDE);
m_dwCurrentForm = 2;
break;
case 3:
// ShowWindow(m_hChildren[0],SW_HIDE);
// ShowWindow(m_hChildren[1],SW_HIDE);
// ShowWindow(m_hChildren[2],SW_HIDE);
m_dwCurrentForm = 3;
break;
default:
break;
}
InvalidateRect(hWnd,NULL,TRUE);
UpdateWindow(hWnd);
}
void OnChildrenCreate(HWND hWnd)
{
}
void OnChildrenCommand(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
RECT rc;
DWORD dwError;
HANDLE hProcess;
DWORD dwProcessId;
HWND hWndFore;
DWORD dwIndex = LOWORD(wParam) - ID_DEVICE_COMMAND;
switch(dwIndex)
{
case 0:
//keybd_event(VK_OFF,0,KEYEVENTF_SILENT,0);
//keybd_event(VK_OFF,0,KEYEVENTF_SILENT | KEYEVENTF_KEYUP,0);
SetSystemPowerState(NULL,POWER_STATE_IDLE,POWER_FORCE);
break;
case 1:
SetSystemPowerState(NULL,POWER_STATE_OFF,POWER_FORCE);
break;
case 2:
SetSystemPowerState(NULL,POWER_STATE_RESET,POWER_FORCE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -