我与OutLook有个约会
我的记性不是太好,总忘记什么来上班的。所以琢磨着怎么自己搞一个这样的小工具。
这不,刚好这几天工作不是太忙,做了一个小工具。
当你登陆系统时,它会判断你今天是否是第一次登陆,如果是的话,则向Microsoft OutLook
发送一个8小时后的“约会”。这样到你下班的时候,OutLook 就会提醒你该下班了。
这个工具分成三部分。
第一:Windows登陆事件监视器,它是一个dll文件。是用C 开发的。部分源代码如下
{
//到临时目录下查找文件login.log,
//1.如果找到,查看该文件的修改时间
//2.没有则创建一个空文件,并且执行一个创建OutLook Appointment 的程序
char tempPath[80];
char fileName[] = "login.log";
int i = 0;
DWORD len;
FILE * FileHandle;
struct tm *newtime;
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
ZeroMemory(tempPath,sizeof(tempPath));
len = GetTempPath(sizeof(tempPath),tempPath);
for(i = 0 ;i< sizeof(fileName);i++)
{
tempPath[i+len] = fileName[i];
}
if(FileExists(tempPath) == 1)
{
//
printf("login1");
newtime = GetFileMofiedTime(tempPath);
if( IsToday(*newtime) == 0)
{
//free(newtime);
remove(tempPath);
}
else
{
//free(newtime);
return 1;
}
}
printf("login2");
// Sleep(1000);
// if(FileExists(tempPath) == 1)
// {
// FileHandle = fopen(tempPath,"r+");
// }
// else
{
FileHandle = fopen(tempPath,"w+");
}
if(FileHandle != NULL)
{
fwrite(".",1,1,FileHandle);
fclose(FileHandle);
}
//MessageBox(NULL,"login3",tempPath,MB_OK);
if(!CreateProcess(NULL,"NewAppoint.exe",NULL,NULL,FALSE,0,NULL,NULL,&si,&pi))
{
printf("login4");//,tempPath,MB_OK);
return 1;
}
else
{
printf("login5");//"login5",tempPath,MB_OK);
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}
return 1;
}
第二:注册这个监视器dll,是用下面的注册表文件注册的
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\GoHome]
"DLLName"="LogIn.dll"
"Logon"="testlogon"
"Impersonate"=dword:00000001
"Asynchronous"=dword:00000001
"Unlock"="testlogon"
第三:向OutLook发送约会的程序,源文件是用C#开发的。如下:
AppointmentItemClass appointItem = (AppointmentItemClass)outLookApp.CreateItem(OlItemType.olAppointmentItem);
//appointItem
appointItem.Location = "RPC";
appointItem.Subject = "It's time to go home";
appointItem.Importance = OlImportance.olImportanceNormal;
appointItem.Body = "Shark Xu.";
appointItem.BusyStatus = OlBusyStatus.olOutOfOffice;
appointItem.Duration = 1;
appointItem.Start = System.DateTime.Now.AddHours(8.0);
appointItem.ReminderMinutesBeforeStart = 1;
appointItem.Sensitivity = OlSensitivity.olNormal;
appointItem.Save();
我还做了一个安装文件,它是一个批处理文件
copy newAppoint.exe %SystemRoot%\System32\
regedit /s GoHome.reg
完全下载(包括所有的源文件和编译后的程序)
转载于:https://www.cnblogs.com/SharkXu/archive/2007/04/09/LogIn.html
我与OutLook有个约会相关推荐
- Dynamics 365 App for Outlook 与 Dynamics 365 for Outlook(已被弃用)
在最新的版本中Dynamics 365 for Outlook(Outlook 客户端)已被弃用 随 Dynamics CRM 2016(版本 8.0)引入的 Dynamics 365 App for ...
- 浅谈Web App前端设计原则
关于Web App 随着web 2.0时代的到来,越来越多的应用程序都是基于Web环境来构建的.这样做的好处显而易见,用户可以方便地使用浏览器来访问应用,而不需要安装客户端程序.而在企业内部,很多应用 ...
- Moleskine笔记本使用之感受【个人管理篇】
这是一篇来自于dbjl的投稿,笔纸一直都是做时间管理和个人管理的最佳工具(没有之一),GTDLife.cn近阶段也在尝试使用笔纸做时间管理,相信不久就会有详尽的使用经验放出,敬请期待. 喜欢上MOLE ...
- Scott Hanselman的2006 Windows最终开发者和高级用户工具列表
enjoyed this post, or this blog, please 喜欢这篇文章或博客,请make a secure tax-deductable donation to the Amer ...
- ActiveSync编程总结(一)
(参考MSDN Programmer's guide of ActiveSync) WindowsPE设备和桌面端作同步,在每一端都有ActiveSync manager(管理器)和ActiveSyn ...
- vc模拟 tabletpc_Scott的TabletPC最佳工具列表
vc模拟 tabletpc John Lam just got his Toshiba M200, much like my M205, this series of Convertible Tabl ...
- 如何从 PC 切换到 Mac,以及你需要了解的内容
如果您是 Windows 的长期用户,转而使用 macOS 似乎需要付出很多努力,但这比乍一看要容易得多.以下是从 PC 切换到 Mac 需要了解的内容,一起来看看吧. 大多数过渡到Mac 的PC 用 ...
- java outlook日历_从 Excel 在特定的日历中创建 Outlook 约会
Dmitry 指出了如何在 Excel 的共享日历中创建 appointment/meeting 的功能.他的帖子对我有很大帮助,因为在共享日历上如何创建约会似乎没有很好的答案.我遍历众多论坛以获取答 ...
- 获取outlook 约会_如何仅获取重要电子邮件的Outlook通知
获取outlook 约会 Microsoft thought they were being helpful when they set up notifications for new email. ...
最新文章
- 解读万方学术检索——SimCSE、Sentence-BERT…
- python英语字典程序-python如何制作英文字典
- C语言-数组名真的不是指针
- Unix环境高级编程学习笔记(一)
- 《基于Node.js实现简易聊天室系列之项目前期工作》
- Java面试没过_Java面试中遇到的坑【填坑篇】
- 前端学习(2997):vue+element今日头条管理--编码规范说明
- Keil软件仿真时如何用逻辑分析仪观察变量值
- 杭电2524 矩形A + B
- 数据结构--课程设计(归档)
- 如何在Windows平台下可以方便获取到android的源码?
- 最长递增子序列和双序列
- 如何将 MacBook 的外置屏幕设置为主屏幕
- 资深黑客谈:安全趋势正在向应用层发展
- 使用JPA @OneToMany关联时,@ JoinColumn和mappedBy有什么区别
- Excel数据分析入门-数据透视表
- Linux文件管理小测试
- Go包管理工具Vendor使用教程
- 视频号网站微信视频下载方法
- 缘何韩国能在流行文化的竞争中如此轻松地战胜日本?