أمجد جمالي قام بنشر يوليو 8, 2004 قام بنشر يوليو 8, 2004 السلام عليكم ورحمة الله وبركاته أخواني الأعزاء هل يمكن تأمين قاعدة البيانات بحيث تغلق ألياً إذا لم يحرك المستخدم الماوس خلال 5 دقائق مثلاً مثل ال Screen Saver وشكراً
أمجد جمالي قام بنشر يوليو 15, 2004 الكاتب قام بنشر يوليو 15, 2004 مرحبا هل سؤالي صعب الى هذه الدرجة ياشباب وين اهل الخبرة وين يا عبشوم بس
lyla قام بنشر يوليو 16, 2004 قام بنشر يوليو 16, 2004 أبدا مش صعب ولا حاجة أفتح النموذج في وضع التصميم ثم في قائمة حدث ستجد خاصية: الفاصل الزمني لعداد الوقت أكتب فيه مثلا : 1000000طبعا هذي القيمة بالملي سكند يعني 10 دقايق . يعد كذه تجد في القائمة :عند عداد الوقت : أكتب مثلا Quit ======================== أحفظ النوذج وشغله سوف يضل مفتوح لمدة 10 دقائق وبعدها يقفل البرنامج , تصلح هذي الطريقة عندما يكون البرنامج على شبكة ويكون أحد المستخدمات فاتحة البرنامج ونسته مفتوح مثلا . تحياتي 1
السيد عبد العال قام بنشر يوليو 18, 2004 قام بنشر يوليو 18, 2004 فى الحقيقة الطريقة السابقة تغلق قاعدة البينات اتوماتيكيا بعد 10000 مللى ثانية ولكن ليس هذا هو المطلوب تماما وذلك لأن قاعدة البيانات ستغلق حتى لو كان المستخدم يستخدم الفأرة ولوحة المفاتيح أى الغلق يتم دونما شرط او قيد يكون تعديلها بالطريقة الاتية 1-ندخل Module ونكتب فيه الجملة الاتية Global SumofEvents1 As Integer, SumofEvents2 As Integer 2- فى النموذج يتم عمل الاتى خاصية Timer Interavels =180000 (milli-Second) تكتب هذه الدوال فى كود النموذج Private Sub Form_KeyPress(KeyAscii As Integer) If SumofEvents1 > 32000 Then SumofEvents1 = -32000 SumofEvents1 = SumofEvents1 + 1 End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If SumofEvents1 > 32000 Then SumofEvents1 = -32000 SumofEvents1 = SumofEvents1 + 1 End Sub Private Sub Form_Timer() If SumofEvents1 = SumofEvents2 Then Application.Quit Else SumofEvents2 = SumofEvents1 End If End Sub والفكرة أنه يتم تعريف متغيريين ونقوم بيادة 1على المتغير الأول عند حدوث أى حدث - يمكن تكرار S Sub Form_MouseMove فى كل الأحداث المطلوب ان تعبر عن ان المستخدم متواجد أمام الكمبيوتر كل فاصل زمنى تقوم Sub Form_Timer بتخزين القيمة عند هذا الفاصل غى المتغير وكل فاصل زمنى تقوم باختبار المتغييرن ومعنى تساويهما أنه لم يتم أى حدث بين الفاصلين وهنا نغلق قاعدة البينات العيوب: 1-يجب تكرار الدوال لكل مقاطع النموذج حيث أن تحرك الماوس على مقطع Detail بسسب الحدث Detail_MouseMove وهكذا 2- فى حالة عمل Minemize للنموذج لن يسجل أى أحداث للماوس والكيبورد مما قد يؤدى ألى غلق قاعدة البيانات بينما المستعمل يقوم بأحداث على مكان أخر 3-أيضا فى حالة فتح نموذج الى هذا النموذج بمساحة أكبر يستقبل النموذج الثانى كل الأحداث وتؤدى إلى النتيجة السابقة 1
السيد عبد العال قام بنشر يوليو 18, 2004 قام بنشر يوليو 18, 2004 وهناك حل افضل قليلا وهو ربط غلق البرنامج بحدوث Screen Saver فعليا وربما كان ذللك معبرا فعليا عن المستخدم كف عن استخدام البرنامج وكذلك ان ضبط screen Saver معبر عن رغبة المستخدم بدلا من تضايقه من غلق البرنامج قصرا عنه الخطوات: 1-ندخل Module ونكتب فيه ننقل فيه الأكود الاتية 'http://www.littleguru.com '================================= Public Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) Public Declare Function GetWindowText& Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) Private strAppTitle As String Private lngHwnd As Long Public Function IsRunning&(strTitle As String) lngHwnd = 0 strAppTitle = strTitle EnumWindows AddressOf EnumWinProc, 0 If lngHwnd <> 0 Then IsRunning = lngHwnd Else IsRunning = 0 End If End Function Private Function EnumWinProc&(ByVal lhWnd As Long, ByVal lParam As Long) Dim WinTitleBuf As String * 255 Dim WinTitle As String GetWindowText lhWnd, WinTitleBuf, 255 WinTitle = StripNulls(WinTitleBuf) If InStr(WinTitle, strAppTitle) <> 0 Then lngHwnd = lhWnd EnumWinProc = False Exit Function End If EnumWinProc = True End Function Private Function StripNulls(OriginalStr As String) As String If (InStr(OriginalStr, Chr(0)) > 0) Then OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1) End If StripNulls = OriginalStr End Function 2- فى النموذج نضع الفاصل الزمنى المناسب بالمللى ثانية وهذا الفاصل لا يستخدم لغلق البرنامج بل كل فاصل زمنى يتم اختبار ما إذا كان الscreen Saver يعمل فإذا كان يعمل يقوم بغلق البرنامج ويتم نسخ هذا الكود فى حدث OnTimer للنموذج : Private Sub Form_Timer() Dim strApp As String strApp = "Screen Saver" If IsRunning(strApp) > 0 Then Application.Quit End If End Sub وما زال يعيبها أن تتم من خلال نموذج ولا يوجد حدث فى Application لكى يتم ربط الدالة به ..... مع تحياتى وخالص الشكر للاستاذ أبى أفنان على هديته أكواد خاصة بالكسس 1
أمجد جمالي قام بنشر سبتمبر 26, 2004 الكاتب قام بنشر سبتمبر 26, 2004 السلام عليكم مرفق مثال أخر يوضح كيفية حماية قاعدة البيانات وذلك بإغلاقها, اذا لم يحرك المستخدم مؤشر الماوس او الكتابة على لوحة المفاتيح خلال فترة زمنية يتم تحديدها مسبقاً واترك لباقي الزملاء التعديل او طرح طرق أخرى مع تحياتي SecureDatabase.zip 1
الطـاير قام بنشر ديسمبر 8, 2004 قام بنشر ديسمبر 8, 2004 جزاكم الله خير جميعا وزادكم من علمه فعلا معلومات قيمة
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.