标题:vfp 如何判断WORD文档是否已被关闭
只看楼主
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
结帖率:89.29%
已结贴  问题点数:20 回复次数:7 
vfp 如何判断WORD文档是否已被关闭
想在用vfp打开的word文档关闭后执行下一条命令,如何判断WORD文档是否已被关闭?

[此贴子已经被作者于2018-5-25 22:34编辑过]

搜索更多相关主题的帖子: vfp WORD 文档 是否 关闭 
2018-05-25 22:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
是怎样打开word文档,代码?
2018-05-26 05:28
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
得分:0 
*打开word文档代码
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;
STRING lpszOP, ;
STRING lpszFile, ;
STRING lpszParams, ;
STRING lpszDir, ;
INTEGER fsshowcmd
DECLARE INTEGER GetDesktopWindow IN win32api
HWND = GetDesktopWindow()
lpszOP = "open"
* 指定要打开的文件名
lpszFile ="rhtbzy.doc"
lpszParams = ""
lpszDir = lpszFile
fsshowcmd =1
* 执行ShellExecute命令
LNRETURN = ShellExecute(HWND, lpszOP,lpszFile, lpszParams, lpszDir,fsshowcmd)


[此贴子已经被作者于2018-5-26 16:06编辑过]


shenkj001@
2018-05-26 15:55
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
用外部进程打开的文件,只能用独占方式打开这个文件,如果打开失败,说明还在使用中。
可以试试用 WinAPI CreateFile(),将第3个参数 dwShareMode 设 0。
2018-05-26 16:44
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
得分:0 
感谢吹水佬,我没用过WinAPI CreateFile(),还是没解决...

shenkj001@
2018-05-27 18:13
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
Win10环境用CreateFile没试成,用OpenFile试试:
注意:测试时文件名是用完整路径

DECLARE LONG OpenFile IN Kernel32 STRING@, STRING@, LONG
DECLARE LONG CloseHandle IN Kernel32 LONG

DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,;
STRING lpszOP, ;
STRING lpszFile, ;
STRING lpszParams, ;
STRING lpszDir, ;
INTEGER fsshowcmd
DECLARE INTEGER GetDesktopWindow IN win32api
HWND = GetDesktopWindow()
lpszOP = "open"
* 指定要打开的文件名
lpszFile ="C:\TEMP\test.doc"
**lpszFile ="rhtbzy.doc"
lpszParams = ""
lpszDir = lpszFile
fsshowcmd =1
* 执行ShellExecute命令
LNRETURN = ShellExecute(HWND, lpszOP, lpszFile, lpszParams, lpszDir, fsshowcmd)

DO WHILE isFOpen(lpszFile)
    INKEY(1)
ENDDO
**INKEY(3)
DO WHILE !isFOpen(lpszFile)
    INKEY(1)
ENDDO
? "文件已经关闭"
RETURN
 
FUNCTION isFOpen(cFileName)
    LOCAL hFile, st
    st = REPLICATE(0h00,136)
    hFile = OpenFile(@cFileName, @st, 0x10)
    IF (hFIle != -1)
        CloseHandle(hFile)
    ENDIF
    RETURN hFIle != -1
ENDFUNC
2018-05-27 20:51
shenkj001
Rank: 3Rank: 3
来 自:河南安阳
等 级:论坛游侠
威 望:9
帖 子:340
专家分:147
注 册:2005-5-23
得分:0 
谢谢吹水佬!我在win7下试了,能用。

shenkj001@
2018-05-27 22:31
hyswcyh
Rank: 8Rank: 8
等 级:贵宾
威 望:20
帖 子:391
专家分:896
注 册:2004-11-23
得分:0 
不错,备用。
2018-09-02 10:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487283-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.663316 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved