一个系统时间的问题

Jerry_Lee01 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 ”;但是却没有修改系统时间;
找不到原因啊,请大牛们给指点一下!
...全文
124 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jerry_Lee01 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的返回值是什么?
Jerry_Lee01 2013-05-16
  • 打赏
  • 举报
回复
谢谢版主的回答,我在调用SetLocalTime()之前,m_str中的每个值都是逐个赋值的,所以在单步调试的时候能够看到m_str中每个变量的值,并且单步调试在对SetLocalTime(&m_str)设置断点,执行该语句后系统时间就改过来了。然而我运行程序后,语句MessageBox("I am running here");都执行了,可是系统时间就是没改变。 我会打印SetLocalTime的返回值并调用GetLastError的。难道单步调试和运行程序所走的过程会有不同吗?

19,468

社区成员

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

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