使用计时器等进行申请?

时间:2011-04-18 11:49:12

标签: delphi delphi-2007

我需要按照以下方式申请。

如果字段的值为1或0,则需要每秒执行10次查询以检入数据库(Ms SQL 2005)。如果其为1则则应用程序需要启动Windows Media Player(全屏)并且播放视频。 应用程序需要在视频期间休眠,视频完成后,应用程序需要唤醒并关闭Windows Media Player并打开Internet Explorer(全屏)并显示网站。

我不知道怎么做这个我不熟悉Delphi。

3 个答案:

答案 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)。