我需要按照以下方式申请。
如果字段的值为1或0,则需要每秒执行10次查询以检入数据库(Ms SQL 2005)。如果其为1则则应用程序需要启动Windows Media Player(全屏)并且播放视频。 应用程序需要在视频期间休眠,视频完成后,应用程序需要唤醒并关闭Windows Media Player并打开Internet Explorer(全屏)并显示网站。
我不知道怎么做这个我不熟悉Delphi。
答案 0 :(得分:3)
将TTimer
放到Delphi表单上。将计时器的间隔属性设置为100(以毫秒为单位)。为检查数据库的OnTimer
事件分配事件处理程序。将Enabled
属性设置为False
。
当您希望计时器开始触发事件时,将Enabled
设置为True。如果您希望将其停用,请将Enabled
设置回False
。
要注意的一件事是,如果您的计时器事件处理程序比定时器间隔花费更多时间。如果发生这种情况,则处理程序的调用之间不会有任何停顿。这不会造成任何可怕的伤害,但可能会导致您的应用程序消耗100%的CPU。防御性技术是在事件处理程序开始时将计时器的Enabled属性设置为False,然后在退出处理程序之前将其设置为True。
重新阅读你的问题,我想到你可能会问如何进行数据库访问,启动Media Player,在视频中睡觉,等待完成,打开IE等。
您不能在一个问题中询问如何完成所有这些操作(有关Stack Overflow上有效问题的说明,请参阅常见问题解答)。如果你真的想要所有这些的答案,那么我们只会将问题视为过于宽泛。
上面的答案为您提供了问题计时器部分的方向。
答案 1 :(得分:0)
如果您不需要delphi表单应用程序,您可以使用服务器端网页(php,asp.net,jsp,无论您最喜欢的)进行此操作。
初始页面加载(服务器端)会检查您的数据库(1或0)?
客户端页面每n秒刷新一次。
...或播放视频并重定向到网站
网站在n秒后重定向到Inital页面。
如果你无法控制你需要显示的网站,你可以在一个框架内调用它。
答案 2 :(得分:0)
我不是连续地轮询该记录,而是在值发生变化时使用触发器告诉我的应用程序 - 当然,如果你可以将这样的触发器添加到数据库中。
如果你不能添加一个触发器,我会使用一个单独的线程来检查字段更改(使用绑定变量准备的正确查询来避免语句重新分析开销)。应用程序播放视频时,线程可以进入休眠状态 - 检查运行Media Player(嵌入与否)的最佳方式是什么,因为你需要知道它何时完成播放,我不知道它是否容易如果使用ShellExecute或CreateProcess将Media Player作为外部应用程序运行,则获取该信息,同时运行外部应用程序并等待其终止是很容易的。
打开资源管理器只需使用正确的参数调用ShellExecute(或CreateProcess)。