【发布时间】:2013-12-27 16:44:14
【问题描述】:
我现在正在开发的应用程序允许用户每天两次更新 Excel 工作表或 Sql 数据库以设置指标。该程序通过在特定时间弹出来做到这一点(例如,上午 6:00、下午 5:00、下午 3:42,无论用户设置什么)。通过让程序在特定时间弹出,程序(“Auto Excel It!!!”)允许您作为用户跟踪设置数据(例如,销售电话、销售演示、会议、编码小时数、jalepeño 数量吃的墨西哥卷饼等)。
开发人员如何通过 Windows Scheduler API(或其他更好的方法)让该程序在特定时间自动“弹出”/启动/运行?
这是我最近的理解的演变:
什么都没有 --> 程序在后台运行时使用计时器 --> 使用 Windows 调度程序的 API 自动运行(当前) --> 您的答案可能有新的理解
例如,我知道:DispatcherTimers、Timers、另一个我不知道的计时器、Sleep()、Windows Scheduler。但是考虑到这些,我不知道该怎么做:通过 Windows 调度程序自动启动程序;如果使用计时器,则保留计算机资源;甚至如何让这个顶部自动弹出。
更新 1:
@nfell2009:你的逻辑帮了我很大的忙。起初,我不得不将您的 Timer 转换为 DispatcherTimer(似乎是 WPF 表单标准)。然后,我将 Sub tCheckTime 的“句柄”切换为“AddHandler tCheckTime.Tick, AddressOf tCheckTime_Tick”——为什么我必须这样做是个好问题。
然后,一旦我设置了基本的 EventHandlers,你将用户的文本(作为日期)与 System.Date 进行比较的想法是好的——当我搞砸了一些事情并且无法让代码工作时,我将其切换并将 System.Date 转换为字符串-即我从 String->Date 到 Date->String...那时我让 Timer 开始工作。当我的 System.Time 计时到下午 3:12 时,MsgBox 弹出“您的消息”。
(快速(邪恶)谢谢!我花了四个多小时才让它工作)
代码:
从在 tCheckTime_Tick 使用“句柄”(这似乎“应该”工作)
Private Sub tCheckTime_Tick(sender As Object, e As EventArgs) Handles tCheckTime.Tick
...
End Sub
到 AddHandler 等等,AddressOf tCheckTime_Tick(有效)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Loaded
'MsgBox(Now().ToString("hh:mm")) 'String.Format("{hh:mm}", Now()))
AddHandler tCheckTime.Tick, AddressOf tCheckTime_Tick 'Why is this necessary?
tCheckTime.Interval = New TimeSpan(0, 1, 0)
End Sub
【问题讨论】:
-
对于这样一个简单的问题,这是非常罗嗦的。你的目标应该是简明扼要。无需为我们加油或提供背景故事。
-
我有办法,让我测试一下代码,我会回答的