zoukankan      html  css  js  c++  java
  • 电脑日使用时间

    一:目的

    累计电脑日使用时间,超过8小时候提醒:请注意休息!

    二:要点

    三:实现

    四:源代码

    #include <windows.h>
    
    LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM);
    void auto_run();
    
    UINT second,minute,hour,day,month;
    int font_size,window_width;
    DWORD dw;			//打杂的
    
    int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
    {
    	auto_run();
    
    	day=GetPrivateProfileInt("Section0","Day",0,"time.ini");
    		
    	SYSTEMTIME st;
    	GetSystemTime(&st);
    	if(day != st.wDay)	second,minute,hour=0;
    	else{
    		hour=GetPrivateProfileInt("Section0","Hour",0,"time.ini");
    		minute=GetPrivateProfileInt("Section0","Minute",0,"time.ini");
    	}
    	
    	font_size = GetSystemMetrics(SM_CYSCREEN)/30;
    	window_width=font_size*6;
    
    
    	WNDCLASS wc;
    	wc.style=CS_HREDRAW|CS_VREDRAW;
    	wc.lpfnWndProc=(WNDPROC)WinProc;
    	wc.cbClsExtra=0;
    	wc.cbWndExtra=0;
    	wc.hInstance=hInstance;
    	wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
    	wc.hCursor=LoadCursor(NULL,IDC_ARROW);
    	wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    
    	wc.lpszMenuName=NULL;
    	wc.lpszClassName="MyWindow";
    	
    	RegisterClass(&wc);//WS_EX_TOOLWINDOW风格可以使得不在任务栏上显示
    	HWND hwnd=CreateWindowEx(WS_EX_TOOLWINDOW,"MyWindow","My Window",WS_POPUP,
    		GetSystemMetrics(SM_CXSCREEN)-window_width,0,window_width,100,
    
    		NULL,NULL,hInstance,NULL);
    	if(!hwnd) return false;
    /*增加窗口透明属性*/   /*动态调用SetLayeredWindowAttributes,使窗口透明*/
    	LONG l = GetWindowLong(hwnd,GWL_EXSTYLE);
    	SetWindowLong(hwnd,GWL_EXSTYLE,l^0x00080000);
    
    
    	HINSTANCE hInst = LoadLibrary("User32.DLL"); 
    	if(hInst) 
    	{ 
    		typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); 
    		MYFUNC fun = NULL;
    		//取得SetLayeredWindowAttributes函数指针 
    		fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
    		if(fun) fun(hwnd,RGB(255,255,255),50,1); 
    		FreeLibrary(hInst); 
    	}
    ///////////////////////////////////////////
    	ShowWindow(hwnd,nShowCmd);
    	UpdateWindow(hwnd);
    
    	MSG msg;
    
    	while(GetMessage(&msg,NULL,0,0))
    	{
    			TranslateMessage(&msg);
    			DispatchMessage(&msg);
    	}
    
    	return msg.wParam;
    }
    
    LRESULT CALLBACK WinProc(HWND h,UINT msg,WPARAM wParam,LPARAM lParam)
    {
    	HDC hdc;
    	PAINTSTRUCT ps;
    	RECT rect;
    	HFONT hFont;
    
    	char str[20],str2[20];  
    	SYSTEMTIME st;
    	switch(msg)
    	{
    	case WM_TIMER:
    		second+=1;
    		//hour+=1;			调试用
    		if(second==60){
    			second=0;minute+=1;
    			InvalidateRect(h,NULL,false);
    			wsprintf(str,"%d",hour);
    			WritePrivateProfileString("Section0","Hour",str,"time.ini");
    			wsprintf(str,"%d",minute);
    			WritePrivateProfileString("Section0","Minute",str,"time.ini");
    
    			GetSystemTime(&st);
    
    			if(st.wDay!=day || day==0){ 
    				wsprintf(str,"%d%02d%02d",st.wYear,st.wMonth,st.wDay);
    				wsprintf(str2,"%02d%02d",hour,minute);
    				WritePrivateProfileString("Section1",str,str2,"time.ini");
    				day=st.wDay;
    			}
    
    			wsprintf(str,"%d",st.wDay);
    			WritePrivateProfileString("Section0","Day",str,"time.ini");
    		}
    		if(minute==60){minute=0;hour+=1;}
    		
    		return 0;
    	case WM_CREATE:
    		SetTimer(h,0,1000,NULL);
    		return 0;
    	case WM_PAINT:
    		hdc=BeginPaint(h,&ps);
    			GetClientRect(h,&rect);
    
    			if(hour<8) wsprintf(str,"%02d:%02d",hour,minute);
    			else wsprintf(str,"%02d:%02d
    请注意休息!",hour,minute);
    
    			hFont = CreateFont(font_size,0,0,0,FW_SEMIBOLD,
    				0,0,0,
    				DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
    				DEFAULT_QUALITY,DEFAULT_PITCH,NULL);
    
    			SelectObject(hdc,hFont);
    
    			if(hour<4) SetTextColor(hdc,RGB(0,255,0));
    			else if(hour>=4 && hour<8) SetTextColor(hdc,RGB(0,0,255));
    			else SetTextColor(hdc,RGB(255,0,0));
    
    			DrawText(hdc,str,-1,&rect,DT_LEFT);
    
    			DeleteObject(hFont);
    		EndPaint(h,&ps);
    		return 0;
    //		/*		调试用
    	case WM_KEYDOWN:
    		if(wParam==VK_ESCAPE){
    			MessageBox(h,"Escape!!!"," ",0);
    			KillTimer(h,0);
    			PostQuitMessage(0);
    		}
    		return 0;
    //		*/
    	case WM_DESTROY:
    		PostQuitMessage(0);
    		return 0;
    	}
    	return DefWindowProc(h,msg,wParam,lParam);
    }
    
    void auto_run()
    {
    	HKEY hKey;
    	char str[100];
    	GetModuleFileName(NULL,str,100);
    
    	if(RegCreateKey(HKEY_LOCAL_MACHINE,
    		"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
    		&hKey) != ERROR_SUCCESS)
    	{
    		MessageBox(NULL,"注册表操作失败!!!"," ",0);
    		return;
    	}
    	RegSetValueEx(hKey,"time",0,REG_SZ,( const BYTE *)str,strlen(str)+1);
    
    	RegCloseKey(hKey);
    }


     

  • 相关阅读:
    [日常摸鱼]bzoj1470[noi2002]Savage
    [日常摸鱼][POI2000]病毒-Tire图(AC自动机)+dfs
    [日常摸鱼]luogu3398仓鼠找sugar-树链剖分
    [日常摸鱼]luogu1613跑路
    [日常摸鱼]bzoj4802 欧拉函数-PollardRho大整数分解算法
    [日常摸鱼]bzoj1444 [JSOI2009]有趣的游戏——AC自动机+矩阵
    [日常摸鱼]bzoj1038 [ZJOI2008]瞭望塔-模拟退火/几何
    [日常摸鱼]poj2420 A Star not a Tree?
    [日常摸鱼]字符串相关
    图论-拓扑排序-应用
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3237147.html
Copyright © 2011-2022 走看看