Запрет печати паролем

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

vserg4
Сообщения: 5
Зарегистрирован: 16 янв 2007, 22:42

Здравствуйте. Подскажите, пожалуйста, как в Word-овском документе запретить копирование текста и вывод текста на печать.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Для этой цели нужно использовать не Word а PDF (Cм. посты на этом форму).
И всё равно при большом желании всегда можно скопировать или распечатать
документ. ;)
Кстати 8-й Finereader от ABBYY прекрасно распознаёт текст с экрана ...
vserg4
Сообщения: 5
Зарегистрирован: 16 янв 2007, 22:42

Aent писал(а):Для этой цели нужно использовать не Word а PDF (Cм. посты на этом форму).
И всё равно при большом желании всегда можно скопировать или распечатать
документ. ;)
Кстати 8-й Finereader от ABBYY прекрасно распознаёт текст с экрана ...
В том то и дело, что требуют в Wordе, а там 150 страниц текста, очень уж не хочется просто так отдавать.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

если это авторский текст - можно поступить стандартно - отправить себе заказным письмом с уведомлением о вручении. Там будет стоять дата, посылку не вскрывать, в случае чего - в суде будет серьёзный аргумент.
Изображение
vserg4
Сообщения: 5
Зарегистрирован: 16 янв 2007, 22:42

Игорь Акопян писал(а):если это авторский текст - можно поступить стандартно - отправить себе заказным письмом с уведомлением о вручении. Там будет стоять дата, посылку не вскрывать, в случае чего - в суде будет серьёзный аргумент.
Требуют в электронном виде, и есть подозрение, что скинут на лево.
Поэтому и хочу, именно для этого документа поставить запрет на копирование текста, и на печать.
Неужели через Vba никак нельзя запретить?
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

Защитить докуменет в Ворде от печати можно немного... но довольно слабо...

Например, можно сделать так (для начала, во всяком случае)

1. Создать в VBA модуль класса под именем EventClass (Редактор VBA-Menu-Insert-Class - F4 - в окне свойств установить имя - EventClass)
2. В окне этого модуля класса написать следующее:

Код: Выделить всё

Public WithEvents AppWord As Word.Application

Private Sub AppWord_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean)
        If Doc Is ThisDocument Then
            MsgBox "Нельзя печатать этот документ!"
            Cancel = True
        End If
End Sub
3. В молуле самой книги написать следующее:

Код: Выделить всё

Dim X As New EventClass

Private Sub Document_Open()
    Set X.AppWord = Word.Application
End Sub
4. Сохранить, закрыть и открыть (с активными макросами)

Если все сделано верно, то любая попытка печати документа будет перехватываться и отменяться.

Последующими шагами я бы предложил сделать:
- менять цвет или видимость (скрытый) шрифта при открыти, сохранении так, чтобы если документ открывается без активных макросов шрифт был бы белый (под цвет бумаги) или невидимый, но при активных макросах при открытии эти макросы делали бы шрифт автоматически видимым (или нужного цвета)
- защитить книгу от сохранения изменений
- защитить модули VBA от доступа
- перехватывать события выделения, копирования и изменения подобно тому, что я предложил выше.
Всякое решение плодит новые проблемы.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Genyaa,
перехватывать события выделения, копирования и изменения подобно тому, что я предложил выше
Вашим способом копирование не перехватишь.
Так как работа с Clipboard реализована на уровне Windows - запретить её из
Word c разумными трудозатратами (без написания перехватчиков клавиатуры и системных вызовов) полагаю невозможным.
А возможность копирования (в.т.ч. внешними программами) делает совершенно бессмысленным перехват печати.
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

vserg4, ваша задача принципиально не решается с использованием любых программных средств. Если документ отчуждается - нет проблемы вывести его на большой ЖК экран, сфотографировать цифровой камерой и распознать в Word, используя программу OCR (b.e. - тот же FineReader). Практика показывает, что на 200 страничный документ уходит около 4 часов работы ;)
Word же в принципе не даст Вам возможности защитить от копирования читаемый документ.
Резюме: Такие проблемы решаются только через суд. Поддерживаю предложение Игорь Акопян.
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

Aent писал(а):Genyaa,
Вашим способом копирование не перехватишь.
Так как работа с Clipboard реализована на уровне Windows - запретить её из
Word c разумными трудозатратами (без написания перехватчиков клавиатуры и системных вызовов) полагаю невозможным.
А возможность копирования (в.т.ч. внешними программами) делает совершенно бессмысленным перехват печати.
Копирование может быть и не перхватишь ... это верно... но выделение текста перехватить можно с легкостью, а значит и ограничить копирование текста в буфер... например, можно сбрасывать любое выделение одной и более букв до нулевого количества букв в выделении (просто поставить Collapse в WindowSelectionChange)...

Впрочем, это понятно, как я и сказал сначала, что защита это слабенькая... для маленького заварочного чайничка...
Всякое решение плодит новые проблемы.
vserg4
Сообщения: 5
Зарегистрирован: 16 янв 2007, 22:42

Genyaa писал(а): Последующими шагами я бы предложил сделать:
- менять цвет или видимость (скрытый) шрифта при открыти, сохранении так, чтобы если документ открывается без активных макросов шрифт был бы белый (под цвет бумаги) или невидимый, но при активных макросах при открытии эти макросы делали бы шрифт автоматически видимым (или нужного цвета)
- защитить книгу от сохранения изменений
- защитить модули VBA от доступа
- перехватывать события выделения, копирования и изменения подобно тому, что я предложил выше.
А можно немного по подробнее про эти шаги.
Ответить