&& написано для скрытия кнопок в тоолбаре при его инициализации если программа отсутствует.
&& 16-01-2007 Автор: Омеличев А.В. написаны по материалам конференции www.foxclub.ru
&& если будут комментарии, то напишите свои отзывы
[code] SET TALK OFF CLEAR ? 'WordExists() = ' ?? WordExists() ? 'ExcelExists() = ' ?? ExcelExists() ? 'OfficeReg("Word") = ' ?? OfficeReg("Word") ? 'OfficeReg("EXCEL") = ' ?? OfficeReg("EXCEL") ? 'OfficeReg("aCCeSS") = ' ?? OfficeReg("aCCeSS") ? 'OfficeReg("publisher") = ' ?? OfficeReg("publisher") ? 'OfficeReg("poWerPOint") = ' ?? OfficeReg("poWerPOint") ? ? 'OfficeReg("MyProg") = ' ?? OfficeReg("MyProg") ?? ' - ошибка, заданый параметр lcOfficeType не входит в число искомых' ? ? 'OfficeReg(1234) = ' ?? OfficeReg(1234) ?? ' - ошибка, заданый параметр lcOfficeType не текст' ? ? 'Перечень ошибок возвращаемых функцией OfficeReg()' ? 'RETURN -1 - ошибка, заданый параметр lcOfficeType не текст' ? ? 'RETURN -2 - ошибка, заданый параметр lcOfficeType не входит в число искомых' ? ? 'RETURN -3 - ошибка OLE или в реестре нет ключа для заданного параметра' ? ' на компьютере пользователя данная программа не установлена' ? ? 'RETURN 0 - в реестре ключ найден, но используется программа не Microsoft Office' ? ? 'RETURN 1 - Ок. ключ реестре найден и используется программа Microsoft Office' FUNCTION WordExists PRIVATE poReg1, poReg2,poShell TRY poShell = CreateObject("WScript.Shell") poReg1 = poShell.RegRead("HKEY_CLASSES_ROOT.doc") poReg2 = poShell.RegRead("HKEY_CLASSES_ROOT.docContent Type") CATCH EXIT ENDTRY IF (VARTYPE(poReg1) = "C" .AND. !ISNULL(poReg1)) .AND.; (VARTYPE(poReg2) = "C" .AND. !ISNULL(poReg2)) RETURN IIF(("WORD" $ UPPER(poReg1)) .AND.; ("WORD" $ UPPER(poReg2)),.T.,.F.) ELSE RETURN .F. ENDIF ENDFUNC FUNCTION ExcelExists PRIVATE poReg1, poReg2, poShell TRY poShell = CreateObject("WScript.Shell") poReg1 = poShell.RegRead("HKEY_CLASSES_ROOT.xls") poReg2 = poShell.RegRead("HKEY_CLASSES_ROOT.xlsContent Type") CATCH EXIT ENDTRY IF (VARTYPE(poReg1) = "C" .AND. !ISNULL(poReg1)) .AND.; (VARTYPE(poReg2) = "C" .AND. !ISNULL(poReg2)) RETURN IIF(("EXCEL" $ UPPER(poReg1)) .AND.; ("EXCEL" $ UPPER(poReg2)),.T.,.F.) ELSE RETURN .F. ENDIF ENDFUNC FUNCTION OfficeReg PARAMETERS lcOfficeType PRIVATE poReg1, poReg2, poShell, pcExtension IF VARTYPE(lcOfficeType) = "C" .AND. !ISNULL(lcOfficeType) lcOfficeType = UPPER(ALLTRIM(lcOfficeType)) DO CASE CASE lcOfficeType == "WORD" pcExtension = "doc" CASE lcOfficeType == "EXCEL" pcExtension = "xls" CASE lcOfficeType == "ACCESS" pcExtension = "mdb" CASE lcOfficeType == "POWERPOINT" pcExtension = "ppt" CASE lcOfficeType == "PUBLISHER" pcExtension = "pub" OTHERWISE RETURN -2 && ошибка, заданый параметр lcOfficeType не входит в число искомых ENDCASE TRY poShell = CreateObject("WScript.Shell") poReg1 = poShell.RegRead("HKEY_CLASSES_ROOT.&pcExtension") poReg2 = poShell.RegRead("HKEY_CLASSES_ROOT.&pcExtensionContent Type") CATCH EXIT ENDTRY IF (VARTYPE(poReg1) = "C" .AND. !ISNULL(poReg1)) .AND.; (VARTYPE(poReg2) = "C" .AND. !ISNULL(poReg2)) RETURN IIF((lcOfficeType $ UPPER(poReg1)) .AND.; (lcOfficeType $ UPPER(poReg2)),1,0) ELSE RETURN -3 && ошибка OLE или в реестре нет ключа для заданного параметра && на компьютере пользователя данная программа не установлена' ENDIF ELSE RETURN -1 && ошибка, заданый параметр lcOfficeType не текст ENDIF ENDFUNC [/code]
Вложенные файлы
# |
Название |
Тип файла |
Размер |
---|---|---|---|
1 | 565officereg | .zip | 1,26 КБ |