Сброс параметров запуска Access
версия для печатиПолучил заказ: нужно переделать отчет в готовом проекте Access. Вроде бы ничего сложного, но разработчик через параметры запуска проекта скрыл все менюшки и окно базы данных. Т.о. добраться до исходников невозможно.. почти. Немного погуглив нашел старый vbs-скрипт, качующий с сайта на сайт. Чтобы больше не искать, размещаю его здесь. Может пригодится еще.
Первым делом можно через Shift попытаться получить окно базы данных и полные меню. Удерживаем shift при двойном щелчке по базе данных в проводнике. Тогда Access должен открыть БД, игнорируя заданные параметры запуска. Однако, программно можно и такое поведение отключить.
Скрипт работает только с mdb-файлами, т.е. если проект скомпилирован в mde, то нужен другой подход. При установке защиты запускать скрипт желательно из другого проекта, вдруг нужно будет откатиться. При снятии защиты ни как иначе запустить не получится, только из другого проекта ;)
Public Function ChangeProperty(DB As Database, strPropName As String, varPropType As Variant, varPropValue As Variant) As Boolean
Dim prp As Property
On Error GoTo CHANGE_ERROR
DB.Properties(strPropName) = varPropValue
ChangeProperty = True
Exit Function
CHANGE_ERROR:
If Err = 3270 Then ' property not found
Set prp = DB.CreateProperty(strPropName, varPropType, varPropValue)
DB.Properties.Append prp
Resume Next
Else
ChangeProperty = False
MsgBox Err.Description
End If
End Function
Public Function GetProperty(DB As Database, strPropName As String, ByRef varPropValue As Variant) As Boolean
Dim prp As Property
On Error GoTo CHANGE_ERROR
varPropValue = DB.Properties(strPropName)
Exit Function
CHANGE_ERROR:
If Err = 3270 Then ' property not found
varPropValue = ""
Resume Next
Else
MsgBox Err.Description
End If
End Function
Public Sub Lockxx(strpath As String)
'strpath - проект-жертва (путь+имя файла)
'strpath = "D:\temp\project1.mdb"
On Error Resume Next
If Dir(strpath) = "" Then
Select Case Err.Number
Case 76:
MsgBox "Путь не найден!!!", vbCritical + vbOKOnly
Exit Sub
Case Else
End Select
End If
If Right(strpath, 3) <> "mdb" Then Exit Sub
Dim DB As Database
Set DB = OpenDatabase(strpath) ' весь этот код желательно выполнять не в той базе, которую закрываешь.
'ChangeProperty DB, "AppTitle", dbText, "Заголовок главного окна аксесса"
'ChangeProperty DB, "StartupForm", dbText, "Формабазы"
'ChangeProperty DB, "StartUpMenuBar", dbText, "MainMenu" 'Название твоего меню, которое будет вместо стандартного аксессовского
ChangeProperty DB, "StartupShowDBWindow", dbBoolean, True 'Не показывать окно базы данных
ChangeProperty DB, "StartupShowStatusBar", dbBoolean, False
ChangeProperty DB, "AllowBuiltinToolbars", dbBoolean, False
ChangeProperty DB, "AllowToolbarChanges", dbBoolean, False
ChangeProperty DB, "AllowFullMenus", dbBoolean, False
ChangeProperty DB, "AllowShortcutMenus", dbBoolean, False
ChangeProperty DB, "AllowBreakIntoCode", dbBoolean, False 'В MDE это не нужно, так как кода в текстовом виде там нету.
ChangeProperty DB, "AllowSpecialKeys", dbBoolean, False 'Не будет работать F11 и т.п.
ChangeProperty DB, "AllowBypassKey", dbBoolean, True 'Если при открытии
'базы держать Shift, то база откроется, игнорируя все запреты и стартовые
'настройки. Этот ключ запрещает и это, то есть в базу совсем нельзя будет
'
залезть в обход стартовых настроек. Если ты хочешь опять открыть базу, то
'ставишь этот ключ в True. Все остальные настройки доступны через меню Сервис > Параметры запуска...
DB.Close
End Sub
[1oo%, EoF]Понравилась статья? Расскажите о ней друзьям: