身体是革命的本钱,眼睛是程序员的本钱

保护视力最好的办法是远离显示器,对于需要长期工作在显示器前的人来说,只要保持适当的距离,不要常时间盯着屏幕,工作一段时间后看看远方,就能很大程度的保护好自己的眼睛!

如果使自己离开屏幕呢?做一个定时提醒的小工具就行了!但是,提醒是一回事,能不能主动执行又是一回事,怎么强制执行呢?最好的办法是创建另外一个桌面,并将这个桌面切换到前面,让自己无法处理任何操作,只好去看看远方了;等过一段时间后,销毁桌面,再将计算机操作权交还给用户。

以下是就源代码,很简单,就不说明了

VOID CALLBACK TimerAPCProc(LPVOID lpArgToCompletionRoutine,
         DWORD dwTimerLowValue,
         DWORD dwTimerHighValue)
{
 static HDESK hDesk = NULL;
 if (hDesk)
 {
  return;
 }

SYSTEMTIME st;
 GetSystemTime(&st);

if (st.wMinute == 0 && st.wSecond == 0)
 {
  hDesk = CreateDesktop("Protect Eye",
   NULL,
   NULL,
   0,
   GENERIC_ALL,
   NULL);
  
  if (NULL == hDesk)
  {
   DWORD dwErr = GetLastError();
   return;
  }
  SwitchDesktop(hDesk);
  
  HANDLE hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
  LARGE_INTEGER liDueTime;
  liDueTime.QuadPart = -300000000;
  SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, 0);
  WaitForSingleObject(hTimer, INFINITE);
  CloseHandle(hTimer);
  CloseDesktop(hDesk);
  hDesk = NULL;
 }
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
 if (! hTimer)
 {
  return 0;
 }

LARGE_INTEGER liUTC = {0};
 BOOL bSuccess = SetWaitableTimer(hTimer, &liUTC, 800, TimerAPCProc, NULL, FALSE);

if (bSuccess)
 {
  while(1)
  {
   SleepEx(INFINITE, TRUE);
  }
 }

CloseHandle(hTimer);

return 1;
}

一个简单的保护视力的软件相关推荐

  1. 保护视力的软件:定时提醒你休息的桌面工具EyeLeo

    文章目录 保护视力的软件:定时提醒你休息的桌面工具EyeLeo 什么是EyeLeo 为什么要使用? 它为什么如此重要? EyeLeo特征 使用说明 保护视力的软件:定时提醒你休息的桌面工具EyeLeo ...

  2. 记一个简单的保护if 的sh脚本

    记一个简单的保护if 的sh脚本 真是坑爹,就下面的sh,竟然也写了很久! if [ `pwd` != '/usr/xx/bin/tomcat' ] thenecho "rstall is ...

  3. 一个简单的学生成绩管理软件(ODBC开发)

    一个简单的学生成绩管理软件(ODBC开发) 下载本文所附源代码 程序运行效果截图: 前面我写过一篇<一个完善的ODBC数据库程序>,大家可能看到过,有鼓励,也有批评,但是所有这一切只有一个 ...

  4. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

  5. 开发一个简单的小学生数学测试软件

    前言 本文适用于未学指针的朋友 本人就是没学到指针的 题目 开发一个简单的小学生数学测试软件,能实现以下功能: (1)保存五个学生的学号及姓名,以及考试软件的登录密码. (2)学生根据登录密码登录到考 ...

  6. 一个简单的网络应用——面部拍照软件

    这是在ETI的第3个工作--给一个政府卫生署的公众殓房做一个给尸体面部拍照的软件,用于家属辨认. 需求:对尸体的面部拍照,并保存在指定的位置. 分析:设计一个直观简捷的操作页面,分为:摄像头显示画面, ...

  7. 一个简单的生产排程软件

    工作之余写的一个小软件.缺点就是计算速度慢了一点. http://blog.139life.com/uploadfile/2006511151542718.rar

  8. 【Linux 中国】12 款简单好用的保护隐私的软件

    12 款简单好用的保护隐私的软件 数据是最宝贵的一项资产. 无论影响好坏,数据收集技术都会一直存在.现实生活中,人们进行分析.研究以及学习,都需要各种各样的数据. 当然,数据收集也会带来风险,比如不法 ...

  9. 通过Dapr实现一个简单的基于.net的微服务电商系统(十八)——服务保护之多级缓存...

    很久没有更新dapr系列了.今天带来的是一个小的组件集成,通过多级缓存框架来实现对服务的缓存保护,依旧是一个简易的演示以及对其设计原理思路的讲解,欢迎大家转发留言和star 目录: 一.通过Dapr实 ...

最新文章

  1. 博客作业05--查找
  2. import的几种用法
  3. Golang之gjson
  4. 物联网带着诚意扑面而来
  5. iOS Hacker Keychain相关The executable was signed with invalid entitlements
  6. 移动硬盘无法停止,竟然是TM的原因
  7. C# 中的常用正则表达式汇总
  8. ccfb类会议有哪些_CCF推荐的国际学术会议和期刊目录修订版发布
  9. java列名无效_Java:列名无效
  10. python梯形公式面积_梯形面积公式
  11. java中md5加密_JAVA中使用MD5加密实现密码加密
  12. 【精】Verilog语言缩写规范
  13. / 和 /* 和 /** 的区别
  14. 微信小程序,分享如何封装一个全局支持暂停,拖动等各类操作的音视频等多媒体管理器
  15. React.createRef()的使用
  16. python install tensorflow 国内源-清华源安装
  17. 最好的补丁是严密的安防体系
  18. 交换机Meth0是什么端口,啥作用?
  19. 旋转导电滑环的作用和优缺点
  20. 杰理之VCOM按键复位【篇】

热门文章

  1. HTML+js实现贪吃蛇小游戏(内含完整代码)
  2. 学习Spherical Harmonics的简记
  3. Windows10系统安装与初始化设置
  4. android小说阅读、MVP + RxJava + Retrofit项目、证件拍照裁剪、蓝牙锁等源码器
  5. mina自定义编解码
  6. Google Hacking 搜索教程,一步到位。
  7. 《响应式Web设计实践》一2.2 字体大小
  8. 【解决】移动硬盘被MAC电脑识别为只读盘
  9. leetcode#66. Plus One
  10. C# winform表格datagridview行高自动设置问题