من فضلكم طريقة ابطال مفتاح esc
واى مفتاح فى الكيبورد
وسوال اخر
عملت تقارير عن طريق الفيجول بيسك 6 وكرستل ريبورت القديم عن قفل الشاشة الخاصة بالتقارير تعطى خطا فى الفيجول ويقفل كلة يقفل الفيجول نفسة ممكن اعرف السبب اية
من فضلكم طريقة ابطال مفتاح esc
واى مفتاح فى الكيبورد
وسوال اخر
عملت تقارير عن طريق الفيجول بيسك 6 وكرستل ريبورت القديم عن قفل الشاشة الخاصة بالتقارير تعطى خطا فى الفيجول ويقفل كلة يقفل الفيجول نفسة ممكن اعرف السبب اية
هذا الكود يطبع لك رقم المفتاح وإذا كان صفر فانه لا يطبعه
Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii = 27 Then Else MsgBox KeyAscii End If End Sub
اشكرك على الرد ارجو ان تعرفنى كيفية الغاء الذر اكس اعلى الفورم
شكرا انا عرفت اذاى
بهذا الكود
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = True
End Sub
السلام عليكم
الكود الذي توصلت إليه لا يمنع الضغط علي ESC ولكنه يمنع إغلاق برنامجك ..
فإذا كنت تريد ذلك وخانك التعبير فاعتقد أن فهم الكود سيكون أفضل..
علي العموم إذا أخذت بالك فستجد Cancel As Integer والقيمة الأفتراضية لل Cancel هي صفر ..
فإذا وضعت الكود التالي عند إنهاء البرنامج عن طريق زر X أو زر Close :
Private Sub Form_Unload(Cancel As Integer) Cancel = 0 End Sub
فلن يحدث شيء وسيتم إغلاق البرنامج.. أما إذا وضعت قيمة Cancel بأي قيمة Integer مثل True =1 فسيتم إعاقة إنهاء البرنامج من زر X ومن زرCLose ومن الضغط علي ALT+F4 .. فقط ..
وإذا أردت معرفة ما الطريقة التي يقوم المستخدم بها إنهاء برنامجك فيمكنك معرفة ذلك عن طريق المعامل الثاني UnloadMode .. فيمكنك الحصول علي ثوابت هذا التابع بالضغط علي F2 وذلك للدخول إلي ال Object Browser والبحث عن QueryUnloadConstants
وستجد الثوابت لهذا المعامل وستجدها موضحة استخدامها في الكود التالي..
ويمكنك استخدام هذا المعامل في تشغيل نسخة ثانية إذا وجدت أن البرنامج قد تم غلقه كما في الكود التالي :
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Select Case UnloadMode Case vbAppTaskManager Shell App.Path & "\" & App.EXEName 'Task manager تم الغلق من ال Case vbFormControlMenu Shell App.Path & "\" & App.EXEName ' alt+F4 أو X تم الغلق من الطرق التقليدية مثل زر Case vbFormCode ' تم إغلاق البرنامج من كود داخل المشروع نفسه.. بمعني أنك أنت الذي أغلقت المشروع End Select End Sub
أما إذا كنت تريد فقط إلغاء عمل زر X او Close او Alt+F4 لتطبيقك أو لأي تطبيق أخر يعمل تحت الويندوز
فيمكنك استخدام دالة API تدعي DeleteMenu, وتقوم بإلغاء زر X و زر CLose عن طريق تغيير موضع الزر في القائمة وذلك بدلالة مقبض النافذة والذي يمكننا الحصول عليه عن طريق دالة FindWindow
والكود التالي يقوم بإلغاء زر X وزر Close لبرنامج الآله الحاسبة Calc علي فرض أن اسم النافذة Window name هو Calculator
قم بوضع التصريحات التالية في موديول :
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Public Const MF_BYPOSITION = &H400&
قم بوضع الشفرة التالية داخل Form مع وضع Command عليه...
Private Sub Command1_Click() Shell "calc.exe" Dim C As Integer C = FindWindow(vbNullString, "Calculator") If C = 0 Then MsgBox "Calculator's handle Could Not Found ": Exit Sub z = GetSystemMenu(C, False) DeleteMenu z, 6, MF_BYPOSITION End Sub
اقتباسمن فضلكم طريقة ابطال مفتاح escواى مفتاح فى الكيبورد
الموضوع سهل جداً وهو انك تكتب جملة شرط تحدد فيها اذا ماكان رقم الرمز المضغوط هو ماتريد ابطاله فتسند له القيمة 0 فمثلاً لو اردت ابطل زر Esc يكون بهذه الطريقة
Private Sub Form_KeyPress(KeyAscii As Integer) If KeAscii=32 Then KeyAscii=0 End Sub
وبنفس الطريقة مع الازرار التى تريد ابطالها واذا اردت ابطال جميع الازرار فاكتب الكود التالى
Private Sub Form_KeyPress(KeyAscii As Integer) KeyAscii=0 End Sub
واذا اردت منع انهاء البرنامج فاستخدم هذا الكود
Private Sub Form_Unload(Cancel As Integer) Cancel=1 End Sub
واذا كنت تريد منع انهاء البرنامج عند اغلاقه بطريقة معينة فيمكنك استخدام الحدث QueryUnload وله معامل اخر غير Cancel وهو UnloadMode وقيمه كالتالى
0 : تم انهاء البرنامج عن طريق اختيار الامر Close من نافذة النظام
1 : تم انهاء البرنامج من داخل البرنامج نفسه
2 : تم اغلاق الويندوز نفسه
3 : تم انهاء البرنامج عن طريق مدير المهام
4 : النافذة تنتهى لان النافذة الام تنتهى وهذا مع MdiFrom , MdiChild
وارجو اذا كنت مخطئاً ان يصحح لى احد الاخوة لان هذه المعلومات قرأتها منذ فترة ولااتذكرها جيداً
وللعلم بعض هذه الطرق لن تستطيع منع انهاء البرنامج معها مثل انهاء الويندوز او انهاء البرنامج من مدير المهام :rolleyes:
تم تعديل هذه المشاركة بواسطة GHOST2010 في 14 يونيو 2005 في 13:55
إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال
السلام عليكم ..
ومن أين سيأتي الخطأ أصلا ؟ ... ثوابت QueryUnloadConstants كالجرس ..
أما بالنسبة لإنهاء البرنامج عن طريق ال End Process .. فلها طرق أخري ذكرت كثيرا جداا في المنتدي... ولا أعتقد أن الأخ kokogogo2000 يريدها...
هذا الموضوع مغلق.