CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

[不用定时器,太费资源]如何在某一分钟刚刚到时通知程序以便处理相应数据?

楼主Gutta(冯大狂)2006-07-04 08:42:42 在 VB / 基础类 提问

系统中有个功能,叫做统计,这个统计功能是自动的。  
   
  用户设置好每天的时间,到了这个时间就自动把数据库中数据提取一部分然后生成一个文件。  
   
  现在我用的方法是用定时器,但是比较浪费资源。  
  有没有某一时刻(分钟)刚刚到时处理的消息呢,请教了~~~  
   
  好象比较难的问题。。。 问题点数:28、回复次数:4Top

1 楼zjn12(无情?)回复于 2006-07-04 08:46:34 得分 0

关注,帮顶,  
  感觉应该可以从windows   管理,或注册表中,设定,  
  查查   杀毒软件是怎么实现的应该好弄。Top

2 楼fxy_2002(阿勇)回复于 2006-07-04 12:53:14 得分 4

用   windows   的计划任务功能调用  
  Top

3 楼jjkk168(老加班的人--好好学习,天天吃饭)回复于 2006-07-04 13:07:16 得分 4

支持楼上,使用Windows的任务计划Top

4 楼GoldFox(金色狐狸)回复于 2006-07-04 13:17:01 得分 20

可以用API函数SetTimer在指定时间运行指定的程序  
  Public   Const   DT_CENTER   =   &H1  
  Public   Const   DT_WORDBREAK   =   &H10  
  Type   RECT  
          Left   As   Long  
          Top   As   Long  
          Right   As   Long  
          Bottom   As   Long  
  End   Type  
  Declare   Function   DrawTextEx   Lib   "user32"   Alias   "DrawTextExA"   (ByVal   hDC   As   Long,   ByVal   lpsz   As   String,   ByVal   n   As   Long,   lpRect   As   RECT,   ByVal   un   As   Long,   ByVal   lpDrawTextParams   As   Any)   As   Long  
  Declare   Function   SetTimer   Lib   "user32"   (ByVal   hwnd   As   Long,   ByVal   nIDEvent   As   Long,   ByVal   uElapse   As   Long,   ByVal   lpTimerFunc   As   Long)   As   Long  
  Declare   Function   KillTimer   Lib   "user32"   (ByVal   hwnd   As   Long,   ByVal   nIDEvent   As   Long)   As   Long  
  Declare   Function   GetAsyncKeyState   Lib   "user32"   (ByVal   vKey   As   Long)   As   Integer  
  Declare   Function   SetRect   Lib   "user32"   (lpRect   As   RECT,   ByVal   X1   As   Long,   ByVal   Y1   As   Long,   ByVal   X2   As   Long,   ByVal   Y2   As   Long)   As   Long  
  Global   Cnt   As   Long,   sSave   As   String,   sOld   As   String,   Ret   As   String  
  Dim   Tel   As   Long  
  Function   GetPressedKey()   As   String  
          For   Cnt   =   32   To   128  
                  'Get   the   keystate   of   a   specified   key  
                  If   GetAsyncKeyState(Cnt)   <>   0   Then  
                          GetPressedKey   =   Chr$(Cnt)  
                          Exit   For  
                  End   If  
          Next   Cnt  
  End   Function  
  Sub   TimerProc(ByVal   hwnd   As   Long,   ByVal   nIDEvent   As   Long,   ByVal   uElapse   As   Long,   ByVal   lpTimerFunc   As   Long)  
          Ret   =   GetPressedKey  
          If   Ret   <>   sOld   Then  
                  sOld   =   Ret  
                  sSave   =   sSave   +   sOld  
          End   If  
  End   Sub  
   
  'In   a   form  
  Private   Sub   Form_Load()  
          Me.Caption   =   "Key   Spy"  
          'Create   an   API-timer  
          SetTimer   Me.hwnd,   0,   1,   AddressOf   TimerProc  
  End   Sub  
  Private   Sub   Form_Paint()  
          Dim   R   As   RECT  
          Const   mStr   =   "Start   this   project,   go   to   another   application,   type   something,   switch   back   to   this   application   and   unload   the   form.   If   you   unload   the   form,   a   messagebox   with   all   the   typed   keys   will   be   shown."  
          'Clear   the   form  
          Me.Cls  
          'API   uses   pixels  
          Me.ScaleMode   =   vbPixels  
          'Set   the   rectangle's   values  
          SetRect   R,   0,   0,   Me.ScaleWidth,   Me.ScaleHeight  
          'Draw   the   text   on   the   form  
          DrawTextEx   Me.hDC,   mStr,   Len(mStr),   R,   DT_WORDBREAK   Or   DT_CENTER,   ByVal   0&  
  End   Sub  
  Private   Sub   Form_Resize()  
          Form_Paint  
  End   Sub  
  Private   Sub   Form_Unload(Cancel   As   Integer)  
          'Kill   our   API-timer  
          KillTimer   Me.hwnd,   0  
          'Show   all   the   typed   keys  
          MsgBox   sSave  
  End   Sub  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:Gutta
  • fxy_2002
  • jjkk168
  • GoldFox

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo