首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

vfp怎么创建windows服务

2013-11-11 
vfp如何创建windows服务?最近想用vfp写一个windows服务,监视一个文件夹,如文件夹内文件增加,将新增的文件

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)

热点排行