CeSetUserNotificationEx和CeRunAppAtTime都使用不了?怎么回事呢。
友善的TQ2440开发板上,测试使用CeSetUserNotificationEx,代码如下,如果提醒时间设成10秒会马上提醒,如果设成大于10秒则一直不会产生提醒,希望有使用CeSetUserNotificationEx成功的兄弟指点一二。
FileTimeToSystemTime(&new_FileTime, &new_SysTime);
trigger.stStartTime = new_SysTime;
new_SysTime.wHour++;
trigger.stEndTime = new_SysTime;
h_Event = CreateEvent(NULL, FALSE, FALSE, _T("MyTestEvent"));
if(NULL == h_Event)
{
TRACE(L"h_Event is NULL\r\n");
return;
}
if(NULL == h_notify)
{
h_notify = CeSetUserNotificationEx(0,&trigger,NULL);
}else
{
h_notify = CeSetUserNotificationEx(h_notify,&trigger,NULL);
}
if(NULL == h_notify)
{
TRACE(L"h_notify is NULL\r\n");
return;
}
if(!b_started)
{
b_started = true;
AfxBeginThread((AFX_THREADPROC)Test_Thread,(LPVOID)this);
}
}
[/code]
后来放弃CeSetUserNotificationEx而用CeRunAppAtTime,却照样指定程序得不到运行,而CeRunAppAtTime又是返回成功的。代码如下:
希望有经验的兄弟指点指点啊,不想用定时器,太不准了。
HANDLE h_notify;
HANDLE h_Event;
bool b_started;
b_started = false;
h_notify = NULL;
void CNotificationDlg::Test_Thread(LPVOID lp)
{
CNotificationDlg* p_owner = (CNotificationDlg*)lp;
while(p_owner->b_started)
{
if(p_owner->h_Event != NULL)
{
TRACE(L"h_Event is not NULL\r\n");
if(WaitForSingleObject(p_owner->h_Event,INFINITE) == WAIT_OBJECT_0)
{
TRACE(L"TIME OK\r\n");
}else
TRACE(L"error\r\n");
}else
{
TRACE(L"h_Event is NULL\r\n");
}
}
}
void CNotificationDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
/* SYSTEMTIME curTime;
GetLocalTime(&curTime);
curTime.wMinute++;*/
CE_NOTIFICATION_TRIGGER trigger;
memset(&trigger, 0, sizeof(trigger));
trigger.dwSize = sizeof(CE_NOTIFICATION_TRIGGER);
trigger.dwType = CNT_EVENT;
// trigger.dwEvent = NOTIFICATION_EVENT_NET_DISCONNECT;
// trigger.dwEvent = NOTIFICATION_EVENT_NONE;
// trigger.dwEvent = NOTIFICATION_EVENT_TIME_CHANGE;
trigger.dwType = CNT_TIME ;
// trigger.dwEvent = NULL;
trigger.lpszApplication = _T("\\\\.\\Notifications\\NamedEvents\\MyTestEvent\0");
trigger.lpszArguments = NULL;
/* SYSTEMTIME curSysTime;
SYSTEMTIME endSysTime;
GetLocalTime(&curSysTime);
curSysTime.wMinute += 1;
endSysTime = curSysTime;
endSysTime.wMinute += 1;
// endSysTime.wYear += 10;*/
SYSTEMTIME old_SysTime, new_SysTime;
FILETIME old_FileTime, new_FileTime;
GetLocalTime(&old_SysTime);
SystemTimeToFileTime(&old_SysTime, &old_FileTime);
ULONG timeInterval = 70;
ULONGLONG interval = (((ULONGLONG)old_FileTime.dwHighDateTime) << 32) + old_FileTime.dwLowDateTime
+ ((ULONGLONG)timeInterval)*1000*10000; // 10秒以后执行应用
new_FileTime.dwHighDateTime = (DWORD)(interval >> 32);
new_FileTime.dwLowDateTime = (DWORD)(interval & 0xFFFFFFFF);[code=C/C++]FileTimeToSystemTime(&new_FileTime, &new_SysTime);
trigger.stStartTime = new_SysTime;
new_SysTime.wHour++;
trigger.stEndTime = new_SysTime;
h_Event = CreateEvent(NULL, FALSE, FALSE, _T("MyTestEvent"));
if(NULL == h_Event)
{
TRACE(L"h_Event is NULL\r\n");
return;
}
if(NULL == h_notify)
{
h_notify = CeSetUserNotificationEx(0,&trigger,NULL);
}else
{
h_notify = CeSetUserNotificationEx(h_notify,&trigger,NULL);
}
if(NULL == h_notify)
{
TRACE(L"h_notify is NULL\r\n");
return;
}
if(!b_started)
{
b_started = true;
AfxBeginThread((AFX_THREADPROC)Test_Thread,(LPVOID)this);
}
}
[/code]
后来放弃CeSetUserNotificationEx而用CeRunAppAtTime,却照样指定程序得不到运行,而CeRunAppAtTime又是返回成功的。代码如下:
SYSTEMTIME st = {0};
CString tempppp;
CTime t = CTime::GetCurrentTime();
t.GetAsSystemTime(st);
tempppp.Format(L"%d-%d-%d\r\n",st.wHour,st.wMinute,st.wSecond);
TRACE(tempppp);
CTimeSpan diff(0, 0, 2, 10);
t += diff;
t.GetAsSystemTime(st);
tempppp.Format(L"%d-%d-%d\r\n",st.wHour,st.wMinute,st.wSecond);
TRACE(tempppp);
TCHAR szXmlPath[MAX_PATH] = {0};
xhGetExePath(szXmlPath);
_tcscat(szXmlPath, L"\\notify.exe");
BOOL m_btemp = CeRunAppAtTime(szXmlPath,&st);
if(m_btemp)
TRACE(L"CeRunAppAtTime success!\r\n");
else
TRACE(L"CeRunAppAtTime fail!\r\n");
希望有经验的兄弟指点指点啊,不想用定时器,太不准了。
...全文
相关推荐
产业园区运营负责人如何精准识别并匹配企业与高校的科技成果?.docx
科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。
Special-Comfy-part1.7z.071
ComfyUI专用模型资源分卷压缩包,Special-Comfy-part1系列第071卷。7z分卷格式,单卷900MB,需配合全部分卷解压使用。
科技中介服务机构在开展技术交易服务时,如何构建专业且高效的智能服务流程?.docx
科技中介服务机构在开展技术交易服务时,如何构建专业且高效的智能服务流程?
国央企创新负责人如何利用平台实现创新资源的多维高效配置?.docx
国央企创新负责人如何利用平台实现创新资源的多维高效配置?
基于MATLAB的三维粒子封装模拟与双峰电池电极的体积容量和功耗性能优化。.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。


