PDA

View Full Version : سوال: غیر فعال کردن کلید های Alt+F11



mehdi_fiz
جمعه 27 آذر 1388, 12:38 عصر
با سلام خدمت همه دوستان عزیز

من می خواهم وقتی برنامه ام در حال اجرا می باشد کلید های Alt+F11 غیرفعال باشد و به قسمت VBA منتقل نشود

قبلاً از راهنمایی شما دوستان عزیز متشکرم

nabeel
جمعه 27 آذر 1388, 18:28 عصر
سلام

در بخش Startup گزینه Use Access Special Keys رو غیر فعلی کنید

خدانگهدار

mehdi_fiz
جمعه 27 آذر 1388, 21:10 عصر
با سلام خدمت آقای پیروزمهر و دیگر دوستان

با تشکر از پاسخ شما ولی من می خواستم روشی باشد که از طریق کد نویسی یا ماکرو باشد که در صورتی که برنامه با Startup اجرا نشد باز هم این کلیدها کار نکند

قبلاً از راهنمایی شما متشکرم

smderfan
جمعه 27 آذر 1388, 22:33 عصر
سلام

همانطور که مستحضر هستید بهترین راه برای غیر فعال کردن Alt+F11 و یا بطور کلی غیر فعال کردن بخش VBA قرار ادن رمز در این قسمت و سپس تبدیل MDB به فرمت MDE هست.

ولی اگر بخواهید از طریق کد وارد عمل شوید می تونید بصورت زیر عمل کنید که اگر رمز بخش VBA ريست شده باشد و یا اگر رمزی وجود نداشته باشد مجدداً از طریق کد رمز گذاشته شود.

برای این هدف می تونید از کد زیر استفاده کنید.


' Microsoft Visual basic for Applications Extensibility 5.3

Const cALT As String = "%"

Const cPassword As String = "1234" '<< Pasword



If Application.VBE.ActiveVBProject.Protection = vbext_pp_none Then

Application.VBE.MainWindow.SetFocus

Application.VBE.MainWindow.Visible = False

SendKeys "+{TAB}{RIGHT}" & cALT & "V{+}{TAB}" & cPassword & "{TAB}" & cPassword & "{ENTER}"

Application.VBE.CommandBars(1).FindControl(Id:=257 8, recursive:=True).Execute

MsgBox "Now you are protected but you code VBA is open", vbInformation, "Protected"



Else

MsgBox "The VBA code already was protected", vbInformation, "Protected"

End If


که پس از اجرا رمز 1234 خواهد شد.

همچنین می تونید جهت غیر فعال کردن گزینه های مختلف پنجره Startup از کد زیر استفاده کنید.


Sub MajProprietes()
ModifiePropr "StartupShowDBWindow", dbBoolean, False
ModifiePropr "StartupShowStatusBar", dbBoolean,False
ModifiePropr "AllowShortcutMenus", dbBoolean, True
ModifiePropr "AllowFullMenus", dbBoolean,False
ModifiePropr "AllowBuiltinToolbars", dbBoolean, False
ModifiePropr "AllowToolbarChanges", dbBoolean,False
ModifiePropr "AllowBreakIntoCode", dbBoolean, False
ModifiePropr "AllowSpecialKeys", dbBoolean, True
ModifiePropr "AllowBypassKey", dbBoolean, True
End Sub

Function ModifiePropr(chNomPropriété As String, varTypeProp As Variant, varValeurProp As Variant) As Integer
Dim bds As dao.Database, prp As Property
Const conErreurPropNonTrouvée = 3270
Set bds = CurrentDb
On Error GoTo Change_Err
bds.Properties(chNomPropriété) = varValeurProp
ModifiePropr = True
Change_Sortie:
Exit Function
Change_Err:
If Err = conErreurPropNonTrouvée Then ' Propriété non trouvée.
Set prp = bds.CreateProperty(chNomPropriété, varTypeProp, varValeurProp)
bds.Properties.Append prp
Resume Next
Else
ModifiePropr = False
Resume Change_Sortie
End If
End Function

nabeel
جمعه 27 آذر 1388, 23:11 عصر
ضمن سلام

جناب آقای فیض آبادی , در این خصوص متاسفانه راه حلی قطعی وجود نداره

تمامی موارد تا حدودی بازدارنده هستند و بس . و استفاده ترکیبی از تمامی روشهای بازدارنده هستش , که میتونه موقعیت امنیتی فایل رو ارتقا بده .

مشکل در اینه که اکسس رویدادی رو در خصوص بسیاری از فعالیتهای خودش صادر نمیکنه , تا با اتکا به اونها بشه , روالی رو به اجرا درآورد .

گو اینکه در صورت تبدیل فایل به MDE , نباید موضوع مورد بحث برای شما مشکلی ایجاد کرده باشه !

موفق باشید

Shahramdindoust
شنبه 13 دی 1399, 22:14 عصر
سلام

همانطور که مستحضر هستید بهترین راه برای غیر فعال کردن Alt+F11 و یا بطور کلی غیر فعال کردن بخش VBA قرار ادن رمز در این قسمت و سپس تبدیل MDB به فرمت MDE هست.

ولی اگر بخواهید از طریق کد وارد عمل شوید می تونید بصورت زیر عمل کنید که اگر رمز بخش VBA ريست شده باشد و یا اگر رمزی وجود نداشته باشد مجدداً از طریق کد رمز گذاشته شود.

برای این هدف می تونید از کد زیر استفاده کنید.


' Microsoft Visual basic for Applications Extensibility 5.3

Const cALT As String = "%"

Const cPassword As String = "1234" '<< Pasword



If Application.VBE.ActiveVBProject.Protection = vbext_pp_none Then

Application.VBE.MainWindow.SetFocus

Application.VBE.MainWindow.Visible = False

SendKeys "+{TAB}{RIGHT}" & cALT & "V{+}{TAB}" & cPassword & "{TAB}" & cPassword & "{ENTER}"

Application.VBE.CommandBars(1).FindControl(Id:=257 8, recursive:=True).Execute

MsgBox "Now you are protected but you code VBA is open", vbInformation, "Protected"



Else

MsgBox "The VBA code already was protected", vbInformation, "Protected"

End If


[/CODE]
میدونم مطلب مال سال ها پیش است ولی برای من این خط کار نکرد شاید در نسخه های جدید اکسس تغییر کرده است
Application.VBE.CommandBars(1).FindControl(Id:=257 8, recursive:=True).Execute