الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

من فضلكم طريقة ابطال مفتاح esc

مغلق
بدأه kokogogo2000 في 14 يونيو 2005 · 6 رد · 1,083 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

من فضلكم طريقة ابطال مفتاح esc

واى مفتاح فى الكيبورد

وسوال اخر

عملت تقارير عن طريق الفيجول بيسك 6 وكرستل ريبورت القديم عن قفل الشاشة الخاصة بالتقارير تعطى خطا فى الفيجول ويقفل كلة يقفل الفيجول نفسة ممكن اعرف السبب اية

#2

هذا الكود يطبع لك رقم المفتاح وإذا كان صفر فانه لا يطبعه

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 27 Then
Else
MsgBox KeyAscii
End If
End Sub

460.gif

#3

اشكرك على الرد ارجو ان تعرفنى كيفية الغاء الذر اكس اعلى الفورم

#4

شكرا انا عرفت اذاى

بهذا الكود

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

Cancel = True

End Sub

#5

السلام عليكم

الكود الذي توصلت إليه لا يمنع الضغط علي 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
#6
اقتباس
من فضلكم طريقة ابطال مفتاح 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

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7

السلام عليكم ..

ومن أين سيأتي الخطأ أصلا ؟ ... ثوابت QueryUnloadConstants كالجرس ..

أما بالنسبة لإنهاء البرنامج عن طريق ال End Process .. فلها طرق أخري ذكرت كثيرا جداا في المنتدي... ولا أعتقد أن الأخ kokogogo2000 يريدها...

هذا الموضوع مغلق.

مواضيع مشابهة