我需要在9月5日之后每天执行一次动作。我写了这个程序
#include <windows.h>
int main()
{
SYSTEMTIME time;
GetLocalTime(&time);
if((time.wMonth = 9 && time.wDay >= 6) || time.wMonth > 9)
{
//perform action
MessageBox(GetForegroundWindow(), "Action performed. Month is " + std::to_string((long long)wMonth), "Alarm!", MB_OK | MB_SYSTEMMODAL);
}
}
我运行了这个程序并显示了消息框。但今天是8月22日,我检查了我的电脑时钟。我做错了什么?
更新:
在写完这个问题之后,我检查了wMonth和wDay的值,这些是1和22,即1月22日。
好像是一个bug。我该怎么做才能获得正确的月份?
答案 0 :(得分:3)
if((time.wMonth = 9 ...
需要:
if((time.wMonth == 9 ...
^^^^
如果您反向测试(许多C ++程序员都这样做),编译器将发出错误:
if((9 = time.wMonth ... // error !
这是一种捕捉这种常见错字的方法。
答案 1 :(得分:0)
我认为最好使用cron管理器(Linux)或任务管理器(Windows)安排工作