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

vfp怎么创建windows服务

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

 

vfp如何创建windows服务?
最近想用vfp写一个windows服务,监视一个文件夹,如文件夹内文件增加,将新增的文件复制另一个文件夹内。不知道用vfp9.0和win7或winxp能否实现,如何实现??请各位大侠指教!!
--参考方法--
我觉得你的设想100%可以实现。VFP9在WIN8中也能很好地运行,用TIMER控件定时读取文件夹中的文件名,用第三方软件把编译成的EXE文件设定成windows 服务启动运行。
--参考方法--
请参考 夜猫 版主的文章:
创建一个作为服务运行的 vfp 程序
--参考方法--
VFP 9.0 的 Samples\Solution 目录下有个 Binding to Windows Message Events 的示例
可以实时监测文件或文件夹的事件和行为

主要的或核心语句是

BINDEVENT(_VFP.hWnd, WM_USER_SHNOTIFY, THIS, "handlewinmsg")



--参考方法--
从 Solution 示例剥离出来的代码:


Declare Long WaitForSingleObject In kernel32 ;
    INTEGER hHandle, ;
    INTEGER dwMilliseconds
Declare Long FindFirstChangeNotification In kernel32 STRING lpPathName, INTEGER bWatchSubtree, INTEGER dwNotifyFilter 
Declare Long FindNextChangeNotification In kernel32 ;
    INTEGER hChangeHandle
Declare Long GetLastError In kernel32
Declare Long FindCloseChangeNotification In kernel32 ;
    INTEGER hChangeHandle
#Define FILE_NOTIFY_CHANGE_FILE_NAME 0x01
#Define FILE_NOTIFY_CHANGE_DIR_NAME 0x02
#Define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x04
#Define FILE_NOTIFY_CHANGE_SIZE 0x08
#Define FILE_NOTIFY_CHANGE_LAST_WRITE 0x10
#Define FILE_NOTIFY_CHANGE_SECURITY 0x100
#Define FILE_NOTIFY_ALL = BITOR(FILE_NOTIFY_CHANGE_ATTRIBUTES,;
                                FILE_NOTIFY_CHANGE_DIR_NAME,;
                                FILE_NOTIFY_CHANGE_FILE_NAME,;
                                FILE_NOTIFY_CHANGE_LAST_WRITE,;
                                FILE_NOTIFY_CHANGE_SECURITY,;
                                FILE_NOTIFY_CHANGE_SIZE)

#Define INVALID_HANDLE_VALUE -1
#Define INFINITE 2147483647
#Define WAIT_FAILED 2147483647
#Define True -1
#Define False 0

lcPathSpec = "C:\Temp\"  && 假设你监测 Temp 目录下的事件
lbWatchSubtree = True

* 监测在该指定的 PathSpec 目录下的文件或文件夹的增加、改名、和删除的事件
lihNotify = FindFirstChangeNotification(lcPathSpec, lbWatchSubtree,FILE_NOTIFY_CHANGE_LAST_WRITE)
* FILE_NOTIFY_CHANGE_DIR_NAME)

If lihNotify <= INVALID_HANDLE_VALUE
    Messagebox ("FindFirstChangeNotification failed. Error code: " + ;
        LTRIM(Str(GetLastError())))
    Return
Else
    * Uncomment for debugging purposes.
    * MessageBox ("FindFirstChangfeNotification instantiation ;
    * succeeded. Handle is: " + ltrim(str(lihNotify)))
Endif

* Now, go into a wait state.
* This is going to look like a hang, since the IDE is all in
* one thread.
liWaitReturn = WaitForSingleObject(lihNotify, INFINITE)
If liWaitReturn >= WAIT_FAILED
    Messagebox ("FindFirstChangeNotification 失败,错误代码是 : " + ;
        LTRIM(Str(GetLastError())))
    Return
Else
    * Messagebox ("在 " + lcPathSpec + " 的目录下,有事件发生!")
    ? "在 " + lcPathSpec + " 的目录下,有事件发生!"
Endif

liWaitReturn = FindCloseChangeNotification(lihNotify)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

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