Заборона на роздруківку документів з чужого комп’ютера, MS Office, Програмні керівництва, статті

Як можна поставити в Word заборону на роздруківку через чужу принтер?
Своє рішення цього питання представив Леонід Бродський, автор програми LeoBilingua. Він написав:


Я думаю, треба заборонити не роздруківку через чужу принтер, а роздруківку з чужого комп’ютера. Я пропоную простий, хоч і не дуже надійний спосіб визначити “свій” комп’ютер – по імені користувача, заданому в Word. Наведений нижче VB код, хоч і можна виявити в редакторі Visual Basic, але в списку макросів його не видно, тому що всі процедури оголошені як Private.


Робимо наступне. Захищається документ повинен бути відкритий в Word. Відкриваємо редактор Visual Basic («Alt» + «F11»). У вікні проектів клацаємо правою кнопкою мишки по проекту, що належить до даного документу (у доданому файлі прикладу це проект CancelPrinting). Вибираємо меню Insert -> Class Module. У вікні властивостей міняємо ім’я класу, наприклад на PrintController. У вікні коду класового модуля PrintController набираємо наступний код:

Option Explicit
 
Private WithEvents app As Word.Application
 
Public Property Set ApplicationObject(value As Word.Application) “Встановити посилання на об’єкт докладання
Set app = value
End Property
 
Private Sub app_DocumentBeforePrint(ByVal Doc As Document, Cancel As Boolean) “Перевірити ім’я користувача If app.UserName <> “Антон Кокін” Then “Скасувати друк
Cancel = True Call MsgBox (“Роздруківка заборонено. Вибачте!”, _
vbExclamation + vbOKOnly, “Test”)
End If
End Sub

Замінюємо текст “Антон Кокін” на своє ім’я, як воно задано в настройках Word.


Тепер у вікні проектів двічі клацаємо лівою кнопкою мишки по модулю ThisDocument, що знаходиться під проектом даного документа (у доданому файлі прикладу це CancelPrinting). Відкривається вікно коду цього модуля. Там набираємо наступний код:

Option Explicit
 
Private controller As PrintController
 
Private Sub Document_New() “Ця процедура працює при створенні нового документа, “Використовуючи даний як шаблон
SetPrintController MsgBox “Новий документ”
End Sub
 
Private Sub Document_Open() “Ця процедура працює при кожному відкритті документа
SetPrintController MsgBox “Відкрити”
End Sub
 
Private Sub SetPrintController() “Встановити посилання на новий екземпляр класу
Set controller = New PrintController “Передати екземпляру класу посилання на об’єкт докладання
Set controller.ApplicationObject = Word.Application
End Sub

Зберігаємо документ.


Щоб код почав працювати, треба закрити і знову відкрити документ. Якщо ж потрібна більша безпека, пропоную замінити перевірку імені на перевірку попередньо створеного унікального ключа в регістрі за допомогою System.ProfileString. Треба буде також якось захистити VB модулі за допомогою пароля.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*