powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Защита документа OpenOffice Writer паролем
5 сообщений из 5, страница 1 из 1
Защита документа OpenOffice Writer паролем
    #39444855
9IKOB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!

Возникла необходимость защиты от редактирования паролем создаваемого в FoxPro отчёта в формате odt. Нашёл в интернете инфу, что для этого нужно при сохранении документа установить соответствующий флаг и прописать пароль. Как это реализовать программно в FoxPro?
...
Рейтинг: 0 / 0
Защита документа OpenOffice Writer паролем
    #39445449
9IKOB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код установки пароля на odt-документ нашёл, только выяснилось, что он предназначен для того, чтобы, не зная пароля, невозможно было в-принципе открыть файл.
Затем нашёл код экспорта odt-документа в pdf:
Код: sql
1.
2.
3.
4.
5.
6.
7.
LOCAL laArgs[3]
oDisp = goOOoServiceManager.createInstance("com.sun.star.frame.DispatchHelper")  
sGraphicURL = "file:///" + CHRTRAN( cPdf, "\", "/" )    
laArgs[1] = OOoPropertyValue("URL",sGraphicURL)  
laArgs[2] = OOoPropertyValue("FilterName", "writer_pdf_Export")  
laArgs[3] = OOoPropertyValue("SelectionOnly", .T.)  
oDisp.executeDispatch(oDoc.currentController.frame, ".uno:ExportTo", "", 0, @laArgs )


Вот только при таком экспорте выводится диалоговое окно с настройками экспорта. У меня теперь такой вопрос: можно ли скрыть от пользователя это окно?
...
Рейтинг: 0 / 0
Защита документа OpenOffice Writer паролем
    #39445857
9IKOB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё возникла мысль решения проблемы закрытия доступа к редактированию файла: установка этому файлу атрибута "Только чтение".
Подскажите, люди добрые, как в FoxPro программно установить файлу атрибут "Только чтение"?
...
Рейтинг: 0 / 0
Защита документа OpenOffice Writer паролем
    #39445863
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У фокса нет встроенных средств для установки атрибутов файла.

Можешь сделать с помощью Scripting.FileSystemObject

Или виндовой утилиты attrib.exe
...
Рейтинг: 0 / 0
Защита документа OpenOffice Writer паролем
    #39445865
9IKOB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашёл решение:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
#define FILE_ATTRIBUTE_READONLY 0x00000001
#define FILE_ATTRIBUTE_HIDDEN 0x00000002
#define FILE_ATTRIBUTE_SYSTEM 0x00000004
#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
#define FILE_ATTRIBUTE_ENCRYPTED 0x00000040
#define FILE_ATTRIBUTE_NORMAL 0x00000080
#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
#define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
#define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
#define FILE_ATTRIBUTE_OFFLINE 0x00001000
#define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
#define FILE_ATTRIBUTE_ERROR 0xFFFFFFFF

declare integer SetFileAttributes in win32api string @, integer
declare integer GetFileAttributes in win32api string @

private lnAttr

*-- Получить текущие атрибуты файла
lnAttr = GetFileAttributes(m.lcFile)

if lnAttr <> FILE_ATTRIBUTE_ERROR && Атрибуты получены
	*-- Сбрасываем атрибут ReadOnly
	*lnAttr = bitand(lnAttr, bitnot(FILE_ATTRIBUTE_READONLY))
	*-- Сбрасываем атрибут Hidden
	*lnAttr = bitand(lnAttr, bitnot(FILE_ATTRIBUTE_HIDDEN))
	*-- Сбрасываем атрибут System
	*lnAttr = bitand(lnAttr, bitnot(FILE_ATTRIBUTE_SYSTEM))
	*-- Установить ReadOnly
	lnAttr = bitor(lnAttr, FILE_ATTRIBUTE_READONLY)
	*-- Установить Hidden
	*lnAttr = bitor(lnAttr, FILE_ATTRIBUTE_HIDDEN)
	*-- Установить System
	*lnAttr = bitor(lnAttr, FILE_ATTRIBUTE_SYSTEM)
	
	*-- Устанавливаем измененное значение
	if SetFileAttributes(m.lcFile, lnAttr) = 0
		= messagebox("Невозможно установить атрибуты файла")
	endif
else && Атрибуты получить не удалось.
	= messagebox("Невозможно получить атрибуты файла.")
endif
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Защита документа OpenOffice Writer паролем
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]