מאת זיו קרייזלמן (22/12/2007): השאלה: כיצד ניתן לזהות לחיצת על כפתור בעכבר?
תשובה: ב-VB יש לכל אחד מכפתורי העכבר קבוע בעזרתו נזהה האם הכפתור בעכבר נלחץ, כאשר הקבועים הם:
vbLeftButton - עבור הכפתור השמאלי.
vbRightButton - עבור הכפתור הימני.
vbMiddleButton - עבור הכפתור האמצעי.
על מנת לדעת שנלחץ כפתור מסוים בעכבר, אנו נשתמש בפונקציית API בשם GetAsyncKeyState (לקריאה נוספת על פונקציות API לחצו כאן).
קודם כל יש להצהיר על הפונקציה GetAsyncKeyState באזור ההגדרות (באזור העליון של הקוד):
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
הפונקצייה GetAsyncKeyState בודקת האם הכפתור במצב 'לחוץ' או 'לא לחוץ',
לכן נצטרך לבדוק בכל רגע נתון האם כפתור העכבר לחוץ בעזרת לולאה:
Do
If GetAsyncKeyState(vbLeftButton) < 0 Then
MsgBox "הכפתור השמאלי נלחץ"
ElseIf GetAsyncKeyState(vbRightButton) < 0 Then
MsgBox "הכפתור הימני נלחץ"
ElseIf GetAsyncKeyState(vbMiddleButton) < 0 Then
MsgBox "הכפתור האמצעי נלחץ"
End If
DoEvents
Loop
הסבר הקוד:
1: פתיחת הלולאה.
2: שאילתת If - האם הכפתור השמאלי (שהקבוע שלו הוא vbLeftButton) לחוץ או לא?
3: במידה והכפתור השמאלי לחוץ, תוצג תיבת הודעה כי הכפתור השמאלי נלחץ. כמובן, כאן הנכם יכולים להכניס פקודות (במקום הצגת תיבת ההודעה), שהנכם מעוניינים לבצע מתי שנלחץ הכפתור השמאלי.
4: בדיקה האם הכפתור הימני (שהקבוע שלו הוא vbRightButton) לחוץ או לא?
5. במידה והכפתור הימני לחוץ, תוצג תיבת הודעה כי הכפתור הימני נלחץ.
6: בדיקה האם הכפתור האמצעי (שהקבוע שלו הוא vbMiddleButton) לחוץ או לא?
7: במידה והכפתור האמצעי לחוץ, תוצג תיבת הודעה כי הכפתור האמצעי נלחץ.
8: סגירת השאילתה.
9: קריאה לפונקציה DoEvents (להסבר על הפונקציה DoEvents לחצו כאן).
10: סגירה הלולאה.
הערה: את הקוד הנ"ל מומלץ לשים בתוך נוהל (Sub) אותו מפעילים בעת שרוצים לבדוק האם כפתור מסוים בעכבר נלחץ.
באופן דומה ניתן אף לזהות לחיצה על מקשי המקלדת.
להרחבה על זיהוי לחיצה על כפתור העכבר (הדומה מאוד לאופן זיהוי הלחיצה על מקש במקלדת) פנו לתשובה בשו"ת: כיצד ניתן לזהות לחיצת על מקש במקלדת?