Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 21:53   #21
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

а можно сделать чтобы в изначально создать в документе маленький неудобный косячок,
напр. цифры превращались в символы или поля съезжали и после этого запрос на включение макросов, чтоб исправить,
потом соответственно проверка даты>запрос пароля>пароля нету>переворот>сохранение, ну и отсчет запросов пароля, и допустим на пятом удаление мимо корзины...
смысл все тот же чтобы пользователь врубил макросы

Последний раз редактировалось npocmop; 13.11.2010 в 03:35. Причина: разжижение мозга комплитид
npocmop вне форума Ответить с цитированием
Старый 14.11.2010, 15:35   #22
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

Подскажите насколько эффективен будет вариант и возможные обходы:

Sub FileSaveAs()
MsgBox "Копирование запрещено", vbCritical
Exit Sub
Dialogs(wdDialogFileSaveAs).Show
End Sub
npocmop вне форума Ответить с цитированием
Старый 14.11.2010, 15:42   #23
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

и как доработать этот код :
Private Sub Document_Open()
Const c_Pass$ = "pass"
With ThisDocument
If .ProtectionType = wdNoProtection Then ' проверка даты, если не наступила, то ничего
If Date <= CDate("14.11.2010") Then Exit Sub ' блокировка = переворот текста
.Range.Text = StrReverse(.Range.Text)
.Protect Type:=wdAllowOnlyReading = 1, Password:=c_Pass
.Save ' уже заблокирован
End If
' напоминание
If InputBox("XXX") <> c_Pass Then
.Close
Else
' разблокировка
.Unprotect Password:=c_Pass
.Range.Text = StrReverse(.Range.Text)
.Save
End If
End With
End Sub


чтобы если пароль введен правильно, то никаких изменений с текстом, а то он даже при правильнов вводе пароля, сносит формат и отчет превращается в записку...
npocmop вне форума Ответить с цитированием
Старый 14.11.2010, 17:11   #24
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

к слову а можно узнать чего вы вообще в конечно счете хотите добиться ?
пользовать получается документ под паролем - платит - получается пароль - работает. такая схема или что-то более изощренное хотите ?
bdfy вне форума Ответить с цитированием
Старый 14.11.2010, 17:42   #25
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

да, схема такая, просто хотелось уйти от защиты в виде окна ввода пароля - пока не получается..
Кодом Вождя удалось защитить документ, как и требовалось - с условием даты + подвесил потом код от копирования в др.формате, о котором и спрашивал выше.
Упёрся в то, что при 1 неправильном вводе пароля слетает формат документа и удаляются графики, таблицы (эффект как от ctrlC>ctrlV из htm в блокнот) и при повторном, уже правильном вводе пароля эти данные не восстанавливаются, то есть пользователю придется запрашивать новый документ, если он даже вводит потом правильный пароль..

цель StrReverse в том чтобы ограничить использование временно, но конкретно, чтобы даже printscreen не помог .. но похоже эта операция несовместима с графикой и имеющимся форматом и действует на них нетвратимо ..

Последний раз редактировалось npocmop; 14.11.2010 в 17:47. Причина: добавление абзаца
npocmop вне форума Ответить с цитированием
Старый 14.11.2010, 20:21   #26
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

Цитата:
да, схема такая, просто хотелось уйти от защиты в виде окна ввода пароля - пока не получается..
как только документ откроется - защиту вы потеряете выкладывайте свои наработки - потестируем на взламываемость
bdfy вне форума Ответить с цитированием
Старый 14.11.2010, 21:45   #27
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

здесь почти полноценный небольшой отчет, с графикой, которая безвозвратно теряется после первого срабатывания StrReverse..
как правило интересен заказчику бывает расчет, 5-8 лисотв, которые легко скопировать через принтскрин, потом файнридером вернуть нормальный вид , от этого прекрасно подходит фунц. переворота
запрос пароля врубается после 15.11., пароль в коде указан, поэтому тут не во взламываемости дело, возможно файлу лучше и совсем удаляться после допустим 5 ошибки ввода пароля...
на vba пароль не ставил, протектvba не использовал

а про взламываемость очень интересные примеры у SAS888 в этой ветке

Последний раз редактировалось EducatedFool; 19.11.2010 в 05:20.
npocmop вне форума Ответить с цитированием
Старый 14.11.2010, 23:11   #28
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от npocmop Посмотреть сообщение
и как доработать этот код ... чтобы если пароль введен правильно, то никаких изменений с текстом, а то он даже при правильнов вводе пароля, сносит формат и отчет превращается в записку...
Код:
Private Sub Document_Open()

    On Error Resume Next
    
Const c_Pass$ = "пароль"
Const c_Date$ = "08.11.2010"
    
    With ThisDocument
        ' наличие блокировки
        If .ProtectionType = wdNoProtection Then
            ' введен пароль
            If .Variables(c_Pass) <> c_Pass Then Else Exit Sub
            ' дата
            If Date <= CDate(c_Date) Then Exit Sub
            ' блокировка
            .Range.Text = StrReverse(.Range.Text)
            .Protect Type:=wdAllowOnlyReading, Password:=c_Pass
            .Save
        ' уже заблоктрован
        Else
            ' здесь код отправки E-Mail и т.п.
        End If
        ' напоминание
        If InputBox("Введите пароль") <> c_Pass Then
            .Close
        Else
            ' разблокировка
            .Unprotect Password:=c_Pass
            .Range.Text = StrReverse(.Range.Text)
            ' сохраняем инфу о разблокировке
            .Variables.Add c_Pass, c_Pass
            .Save
        End If
    End With

End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 15.11.2010, 00:07   #29
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

Спасибо Вождь, но формат и графика вылетает...
Видимо
Цитата:
StrReverse .. операция несовместима с графикой и имеющимся форматом и действует на них нетвратимо ..
жаль буду искать что-то более подходящее
npocmop вне форума Ответить с цитированием
Старый 15.11.2010, 08:42   #30
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Цитата:
Сообщение от npocmop Посмотреть сообщение
формат и графика вылетает...
По-моему решение неплохое, его надо чуть доработать, т.е. используя поиск и замену обрабатывать только слова из букв кириллицы и латиницы. Потому что просто спрятать содержимое документа в нем же не получится.
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть или запретить для изменения nicuav Microsoft Office Excel 17 16.02.2012 02:22
Запретить сворачивание формы voron.kz Помощь студентам 3 05.11.2010 09:07
Запретить редактирование в DBGrid MixanMM БД в Delphi 12 10.05.2010 20:28
Запретить изменения Книги после истечения месячного срока komar73 Microsoft Office Excel 0 31.03.2009 11:01