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

كيفية عمل بالونة تنبيه بجانب الأيقونة

مغلق
بدأه ابن الشريف في 19 أغسطس 2006 · 3 رد · 930 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

الحمد لله رب العالمين والصلاة والسلام على سيد الأنبياء وولي المرسلين نبينا محمد وعلى آله الطيبين الطاهرين وأصحابه وزوجاته أمهات المؤمنين وأما بعد:

أتوجه بالشكر للأخ الفاضل GENIUS-IT على مساعدته لي في هذا الدرس وأتمنى من الجميع الإستفادة منه...

هذا الدرس يدول حول عمل رسالة بالونية تظهر بجانب أيقونة الساعة الخاصة ببرنامجك مثلما توضح الصورة 1-1 وسأقوم هنا بشرح كيفية عمل مثل هذه البالونة مع مثال مرفق

battar_baloon.jpg

صورة 1-1 : رسالة بالونية خاصة بأحد البرامج من برمجتي الخاصة

والدروس عن هذا الموضوع منتشرة على الإنترنت لكن بشكل معقد , ولهذا قمت بتبسيطها بمثال بسيط عبارة عن Form واحدة و Module واحد فقط...

الكود الموجود في الـModule خاص بإرسال أيقونة البرنامج إلى الـSystem Tray وأيضاً إظهار الرسالة البالونية فوقها...

والـForm موجود فيه نصل الرسالة المدخلة وأربع Radio buttons لإختيار أيقونة الرسالة البالونية...

نبدأ أولا ً بالـModule سآخد جزء جزء وأقوم بشرحه :

Public Const APP_SYSTRAY_ID = 999

Public Const NOTIFYICON_VERSION = &H3

Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const NIF_STATE = &H8
Public Const NIF_INFO = &H10

هذا الجزء خاص بتعريف ثوابت أو Constants لإرسال الأيقونة بجانب الـSystem Tray

Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_MBUTTONDBLCLK = &H209
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_MOUSEMOVE = &H200
Public Const WM_COMMNOTIFY = &H44
Public Const MAX_TOOLTIP As Integer = 64

هذا الجزء خاص بتعريفات الثوابت الخاصة بإلتقاط الحركة بزر الماوس على الأيقونة وهي مصغرة في الـSystem Tray

Public Type NOTIFYICONDATA
  cbSize As Long
  hWnd As Long
  uID As Long
  uFlags As Long
  uCallbackMessage As Long
  hIcon As Long
  szTip As String * 128
  dwState As Long
  dwStateMask As Long
  szInfo As String * 256
  uTimeoutAndVersion As Long
  szInfoTitle As String * 64
  dwInfoFlags As Long
  guidItem As GUID
End Type

Public Declare Function Shell_NotifyIcon Lib "shell32.dll" _
   Alias "Shell_NotifyIconA" _
  (ByVal dwMessage As Long, _
   lpData As NOTIFYICONDATA) As Long

Public Declare Function GetFileVersionInfoSize Lib "version.dll" _
   Alias "GetFileVersionInfoSizeA" _
  (ByVal lptstrFilename As String, _
   lpdwHandle As Long) As Long

Public Declare Function GetFileVersionInfo Lib "version.dll" _
   Alias "GetFileVersionInfoA" _
  (ByVal lptstrFilename As String, _
   ByVal dwHandle As Long, _
   ByVal dwLen As Long, _
   lpData As Any) As Long

Public Declare Function VerQueryValue Lib "version.dll" _
   Alias "VerQueryValueA" _
  (pBlock As Any, _
   ByVal lpSubBlock As String, _
   lpBuffer As Any, _
   nVerSize As Long) As Long

Public Declare Sub CopyMemory Lib "kernel32" _
   Alias "RtlMoveMemory" _
  (Destination As Any, _
   Source As Any, _
   ByVal Length As Long)

هنا التعريفات الإضافية لإرسال الأيقونة للـSystem Tray وتجهيز رسالة البالون فوقها بالإضافة إلى دوال API مرتبطة بالعملية..

لم أتوسع كثيرا ً في شرح هذه الأمور لإنها متامثلة ....

الآن للـForm

أهم Functions في الفورم هم :

Private Sub ShellTrayAdd()

   Dim nid As NOTIFYICONDATA

   If NOTIFYICONDATA_SIZE = 0 Then SetShellVersion

  'set up the type members
   With nid

	  .cbSize = NOTIFYICONDATA_SIZE
	  .hWnd = Me.hWnd
	  .uID = APP_SYSTRAY_ID
	  .uFlags = NIF_MESSAGE Or NIF_ICON Or NIF_TIP
	  .uCallbackMessage = WM_MOUSEMOVE
	  .dwState = NIS_SHAREDICON
	  .hIcon = Me.Icon

	  'szTip is the tooltip shown when the
	  'mouse hovers over the systray icon.
	  'Terminate it since the strings are
	  'fixed-length in NOTIFYICONDATA
	  .szTip = "Baloon" & vbNullChar
	  .uTimeoutAndVersion = NOTIFYICON_VERSION

   End With

  'add the icon ...
   Call Shell_NotifyIcon(NIM_ADD, nid)

  '... and inform the system of the
  'NOTIFYICON version in use
   Call Shell_NotifyIcon(NIM_SETVERSION, nid)
End Sub

وهي المسؤولة عن إضافة الأيقونة إلى الـSystem Tray

وأيضا ً :

Private Sub ShellTrayModifyTip(nIconIndex As Long)

   Dim nid As NOTIFYICONDATA

   If NOTIFYICONDATA_SIZE = 0 Then SetShellVersion

   With nid
	  .cbSize = NOTIFYICONDATA_SIZE
	  .hWnd = Me.hWnd
	  .uID = APP_SYSTRAY_ID
	  .uFlags = NIF_INFO
	  .dwInfoFlags = nIconIndex

	  'InfoTitle is the balloon tip title,
	  'and szInfo is the message displayed.
	  'Terminating both with vbNullChar prevents
	  'the display of the unused padding in the
	  'strings defined as fixed-length in NOTIFYICONDATA.
	  .szInfoTitle = "ãÍãÏ Õáì Çááå Úáíå æÂáå" & vbNullChar
	  .szInfo = strBaloonMessage & vbNullChar
   End With

   Call Shell_NotifyIcon(NIM_MODIFY, nid)

End Sub

وهي المسؤولة عن إظهار الرسالة البالونية فوق الأيقونة

وأخيرا ً :

Private Sub ShellTrayRemove()

   Dim nid As NOTIFYICONDATA

   If NOTIFYICONDATA_SIZE = 0 Then SetShellVersion

   With nid
	  .cbSize = NOTIFYICONDATA_SIZE
	  .hWnd = Me.hWnd
	  .uID = APP_SYSTRAY_ID
   End With

   Call Shell_NotifyIcon(NIM_DELETE, nid)

End Sub

وهي المسؤولة عن حذف الأيقونة من الـSystem Tra وعادة تُستخدم هذه الـFunction في الـForm_unload لإزالتها بعد إغلاق البرنامج.

هذا هو البرنامج بإختصار شديد قمت بتعديله ليكون سهل للجميع :lol:

البرنامج في المرفقات ومن لديه أي مشاكل ليكتبها لنحلها سوية ً ...

أتمنى من الجميع الإستفادة...

والسلام,

أخوكم,

Baloon.rar

تم تعديل هذه المشاركة بواسطة loalsharif.NET في 19 أغسطس 2006 في 11:01

#2

وفقك الله والى الامام

158.gif

هناك فرق بين أن تكبر بالعمر

، و أن تكبر بالعقل
فالأولى ، إجباري
، والثانية اختياري .."
 
 

164684_514411088579476_442405016_n.jpg

#3

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

وفقك الله والى الامام

والسلام عليكم ورحمة الله وبركاته

ادعو لي بالهداية فأنا أحتاج هذا الدعاء بشدة

منتدى تصميم التطبيقات (و يشمل نظم التشغيل) و تعريبها. <<<<<<

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

بعض ردودي ومشاراكاتي في المنتدى:

1- هل تريد التحكم بجهازك كأنك محترف, ( إذاً تعال معي وتعلم الرجستري Registry ).

...|-->> فكرة عامة عن الرجستري وكيفية التعامل معه ( رقم المشاركة 1 - 4 )

...|-->> كتابة ملف رجستري

...|-->> تشغيل الرجستري دون رسائل( في الخفاء )

...|-->> بعض التحكمات التي يقدمها الرجستري

...|-->>=>> إيقاف عمل Ctrl+Alt+delete ( Task Manager )

...|-->>=>> إخفاء قائمة ملف file وبذلك لن ترى قائمة file

...|........... في مشاركة أخرى >> حتى ولو قمت بالضغط على أي ملف أو مجلد بزر الفأرة الأيمن

...|-->>=>> لإيقاف وإخفاء عمل البحث Find من على الجهاز

...|-->> بعض المعلومات التي يقدمها الرجستري

...|-->>=>> معرفة الأجهزة المتصلة بالـIDE ورقم السريال الخاص لكل جهاز

...|-->> من أحسن مواقع الرجستري

...|-->>=>> http://technet2.microsoft.com/WindowsServe...3.mspx?mfr=true

منتدى مبرمجي لغة Microsoft Visual Basic <<<<<<

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

برامج من صنعي:

1- لعبة (من صنعي ), جربها وقول رأيك

2- ساعة حائط, من صنعي

بعض ردودي ومشاراكاتي في المنتدى:

1- طريقتان لفتح ملف معين وليكن بامتداد SWF ببرنامجك [ الطريقة الأولى - الطرقة الثانية ]

2- هل تريد ألا يتحكم أحد في الجهاز غيرك؟

3- كود ايقاف عمل زر الاغلاق x بزاوية الفورم

4- عرض صورة متحركة بالكود , أي بدون استخدام أدوات

5- اجعل الـComboBox [ تنسدل - لما تكتب فيا تنسدل وتظهر الاسماء التى تبدأ بالحرف اللي كتبته فى الكومبو ]

6- إنشاء مكون أثناء تشغيل البرنامج ثم إدخاله تحت نطاق مكون آخر مثلاً إدخاله داخل نطاق microsoft tabbed dialog control

أسئلتي في المنتدى التي تم الإجابة عليها:

1- كيف يمكن قراءة الإشارات الصوتية الخارجة من الميكروفون أو السماعات ( لرسمها أو العبث بها ) ؟ أرجو المزيد من الردود ...

2- إيقاف عمل الرجستري

أسئلتي في المنتدى التي لم يتم الإجابة عليها:

اقتباس
ردك يعطي حافذ للإجابة على أسئلتك

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…