一个系统时间的问题

DaveLee001 2013-05-16 11:22:39
问题:在函数
void CTestDlg::OnTimer(UINT nIDEvent)
{
switch()
{
case 1:
SetLocalTime(&m_str);
MessageBox("I am running here");
break;
default:
break;
}
CDialg::OnTimer(nIDEvent);
}
当我单步调试的时候能够进入OnTimer函数,并且可以执行SetLocalTime(&m_str);从而修改系统时间;并且也能弹出对话框“I am running here ”;
但是当我运行程序时,也能弹出对话框“I am running here ”;但是却没有修改系统时间;
找不到原因啊,请大牛们给指点一下!
...全文
127 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DaveLee001 2013-05-17
  • 打赏
  • 举报
回复
我修改后只这样子的: void CTestDlg::OnTimer(UINT nIDEvent) { bool isModify; m_str.wYear = y; m_str.wMonth = mo; m_str.wDay = d; m_str.wHour = h +8; m_str.wMinute = m; m_str.wSecond = s; switch(nIDEvent) { case 1: isModify = SetLocalTime(&m_str); if(isModify) { MessageBox("modify secceed !"); } else { MessageBox("modify failed!"); } break; default: break; } CDialg::OnTimer(nIDEvent); } 当我单步调试的时候,m_str的各个值都没问题,isModify的值是真,系统时间也修改了,且弹出"modify secceed !"的对话框。但是当我直接运行程序时,系统时间没有修改,且弹出"modify failed!"的对话框。目前就是这样的现象。还望有经验的大牛们不吝指教哇!!!
yaozhiyong110 2013-05-17
  • 打赏
  • 举报
回复
那再getlasterror下啊 把错误值也打出来 查下不就知道了
快乐鹦鹉 2013-05-16
  • 打赏
  • 举报
回复
把m_str的值输出来看看,还有SetLocalTime的返回值。可以增加GetLastError看看有无错误
zgl7903 2013-05-16
  • 打赏
  • 举报
回复
可能是你程序的权限不够 MSDN上有这样的注释 The SetLocalTime function enables the SE_SYSTEMTIME_NAME privilege before changing the local time. This privilege is disabled by default. For more information, see Running with Special Privileges. AdjustTokenPrivileges 打开 SE_SYSTEMTIME_NAME 权限试试
西山小月 2013-05-16
  • 打赏
  • 举报
回复
SetLocalTime的返回值是什么?
DaveLee001 2013-05-16
  • 打赏
  • 举报
回复
谢谢版主的回答,我在调用SetLocalTime()之前,m_str中的每个值都是逐个赋值的,所以在单步调试的时候能够看到m_str中每个变量的值,并且单步调试在对SetLocalTime(&m_str)设置断点,执行该语句后系统时间就改过来了。然而我运行程序后,语句MessageBox("I am running here");都执行了,可是系统时间就是没改变。 我会打印SetLocalTime的返回值并调用GetLastError的。难道单步调试和运行程序所走的过程会有不同吗?
DirectX修复工具(DirectX repair)是一款完全由本人自主开发的系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。资源中的技术文档包含程序的部分源代码,以供编程爱好者交流。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista以及Windows 7,同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。本程序中包含了最新版的DirectX redist(Jun2010),并且全部文件都有Microsoft的数字签名,安全放心。 本程序为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、修复的全部功能,无需用户的介入,大大降低了使用难度。 本程序采用了多线程编程技术,可充分利用系统的资源,减少时间的等待。同时,针对部分低性能电脑,也做了一定程度的优化。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了2项高级功能。点击其中的“注册系统中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。 程序附带了用户反馈程序,可以在用户允许的前提下发送检测修复结果。用户也可以在出现问题时通过反馈程序和软件作者进行交流,共同查找问题。反馈是完全匿名和自愿的。 本程序基于Microsoft .NET Framework 2.0开发,对于Windows 2000、Windows XP、Windows 2003的用户需要首先安装.NET Framework 2.0或更高版本才可运行本程序。有关下载和安装的详细信息请参阅“致Windows XP用户.txt”文件。对于Windows Vista、Windows 7用户,可以直接运行本程序。

19,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧