有时我们需要检查指定类型的文件是否存在缺省的程序可用来打开它,例如,如果我们要显示一个 .DOC 文件,首先我们要检查当前系统中是否安装了合适的程序可以打开它,下面的函数可以完成此功能:
- m.cType = 'xls'
- m.cExeFile = SysDefaultOpenedBy( m.cType )
- IF EMPTY( m.cExeFile )
- MESSAGEBOX( '没有找到缺省的程序来打开 ' + m.cType + ' 类型的文件' )
- ELSE
- MESSAGEBOX( m.cType + ' 类型的文件可以使用下面的程序来打开' ;
- + 0h0d0a0d0a + m.cExeFile )
- ENDIF
- FUNCTION SysDefaultOpenedBy( tcTypeName )
- LOCAL cTestFile, cExeFile
- DO WHILE .T.
- m.cTestFile = FORCEEXT( SYS(2015), m.tcTypeName )
- IF !FILE( m.cTestFile )
- EXIT
- ENDIF
- ENDDO
- STRTOFILE( 'Test', m.cTestFile )
- DECLARE Long FindExecutable IN shell32 ;
- String lpFile, String lpDirectory, String @ lpResult
- m.cExeFile = REPLICATE(CHR(0), 260 )
- IF ( FindExecutable( m.cTestFile, NULL, @ m.cExeFile ) > 32 )
- m.cExeFile = RTRIM( m.cExeFile, CHR(0))
- ELSE
- m.cExeFile = ''
- ENDIF
- ERASE ( m.cTestFile )
- RETURN m.cExeFile
- ENDFUNC