欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

vfp怎么创建windows服务?上次没说清,再发一帖

更新时间: 2014-01-05 02:26:58 责任编辑: Author_N1

 

vfp如何创建windows服务?上次没说清,再发一帖
我想用vfp写一个windows服务,监视一个文件夹,如文件夹内文件增加,将新增的文件复制另一个文件夹内。不知道用vfp9.0和win7或winxp如何实现监视一个文件夹,如文件夹内文件增加,将新增的文件复制另一个文件夹内??我用VFP命令复制文件,调试正确,作为服务运行时没反应,是不是VFP命令在windows服务中不能用?请各位大侠指教,如何实现这个功能。最好有代码,谢谢! 再一次的回答:
http://bbs.csdn.net/topics/390636724
--参考方法--
我不用 Windows 服务响应事件
因为防火墙或杀软或干掉这些服务
还有如果发生了事件
很难及时回馈到 VFP 的窗口中

我采用 FOCUS.FLL 动态库监测目录或文件的事件
很及时
不怎么耗资源


Set Library To FOCUS.FLL
Clear

Local nHandle

If ( NOT_HandlesFree() > 0 )
    NOT_Frequency( 1000 )  && 间隔 1 秒内将报告该目录的任何变化。
    nHandle = NOT_Set( "C:\Temp\aaa", "WarnMe", .T., 24 )

    If ( nHandle != -1 )
        ? NOT_info( nHandle,1 )       && "C:\Temp\aaa"
        ? NOT_info( nHandle,2 )       && "WarnMe"
        ? NOT_info( nHandle,3 )       && .T.
        ? NOT_info( nHandle,4 )       && 24
    Else
        =Messagebox( "无法设置通知", 48, "通知" )
    Endif
Else
    =Messagebox( "无法设置通知,可能不存在 [C:\Temp\aaa] 目录。请释放某些句柄。", 48, "通知" )
Endif

Procedure WarnMe( nHandle )  && 发出警告
    =Messagebox( "有人在动我的 C 盘", 64, "通知" )
    Return

--参考方法--
如果用 Notification 的 API 做
大概是这样子的


* 监控指定文件夹中的文件增删状态

Public oForm
Clear
* oForm = CREATEOBJECT("Tform", SYS(2023)) && 监控 TEMP 目录
oForm = Createobject("Tform", "C:\Temp") && 监控 C:\Temp 目录
oForm.Visible = .T.
* 结束主程序

Define Class Tform As Form
    #Define FILE_NOTIFY_CHANGE_FILE_NAME 1
    #Define FILE_NOTIFY_CHANGE_DIR_NAME 2
    #Define FILE_NOTIFY_CHANGE_ATTRIBUTES 4
    #Define FILE_NOTIFY_CHANGE_SIZE 8
    #Define FILE_NOTIFY_CHANGE_LAST_WRITE 16
    #Define FILE_NOTIFY_CHANGE_LAST_ACCESS 32
    #Define FILE_NOTIFY_CHANGE_CREATION 64
    #Define FILE_NOTIFY_CHANGE_SECURITY 128
    #Define INVALID_HANDLE_VALUE -1
    #Define WAIT_OBJECT_0 0
    #Define WATCHING_INTERVAL 1000  && 间隔时间,单位:毫秒

    Protected hNotify, PathBeingWatched

    Width = 400
    Height = 150
    MaxButton = .F.
    BorderStyle = 2
    AutoCenter = .T.
    Caption = "正在监控目录"

    hNotify = INVALID_HANDLE_VALUE
    PathBeingWatched = ""

    Add Object lblTarget As Label With Left = 10, Top = 7, AutoSize = .T.
    Add Object tm As Timer With Interval = 0

    Add Object lblAlert As Label With Left = 10, Top = 30, ;
        Autosize = .T., Caption = "通知 : "

    Function Init(cPath)
        This.Declare
        This.PathBeingWatched = Fullpath(m.cPath)

        If Not This.StartWatching()
            = Messagebox("通知句柄错误,可能不存在该目录。")
            Return .F.
        Endif

    Procedure Destroy
        This.StopWatching

    Protected Function StartWatching
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:26:58
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9911/
本文WWW.DOC100.NET DOC100.NET版权所有。