PDA

View Full Version : بردن برنامه به Tray



alizanganeh
دوشنبه 01 اسفند 1390, 00:43 صبح
سلام
میخواستم بدونم آیا در vb6 امکانش هست که سیستمی رو برنامه بذاریم تا مثلا با کلیک بر روی دکمه ای خاص برنامه بجای miniminze شدم به قسمت tray در کنار ساعت ویندوز مانند بقیه ی نرم افزار ها برود؟
ممنون

shahabbasic
دوشنبه 01 اسفند 1390, 01:02 صبح
کامپوننت ضمیمه شده رو به پروژه اضافه و از کد زیر استفاده کنید

Private Sub Form_Load()
Tray1.Icon = "C:\iran.ico"
Tray1.Add
End Sub
برای اینکه آیکن برنامه موقع مینیمایز به تسکبار نره و به ناحیه اعلان منتقل بشه :

Private Sub Form_Resize()
If Me.WindowState = 1 Then Me.Hide
End Sub
برای حذف آیکن از ناحیه اعلان :

tray1.Remove
برای نمایش Tooltip دلخواه موقعی که نشانگر ماوس روی آیکن برنامه در ناحیه اعلان قرار میگیره :

Tray1.BalloonText = "my Program"
اگر میخوایید با کلیک راست روی آیکن کنار ساعت منویی گشوده بشه باید اول یک منو در فرم بسازید که حتما دارای ساب منو باشه و از این کد استفاده کنید:

Private Sub Tray1_RightMouseDown(Shift As Integer)
PopupMenu mymenu
End Sub
برای اینکه بعد از دابل کلیک روی آیکن فرممون نمایش داده بشه :

Private Sub Tray1_LeftDbClick()
Form1.WindowState = 0
Form1.Show
End Sub
Download (http://s1.picofile.com/file/7307774187/MBTTray.zip.html)

alizanganeh
دوشنبه 01 اسفند 1390, 18:02 عصر
سلام
تشکر ولی داداش اون فایل ضمیمه ای که دادی کار نمیکنه
لطفا لینکشو عوض کنید
ممنون

M.T.P
دوشنبه 01 اسفند 1390, 18:43 عصر
البته دوستان اکتیویکس گذاشتن من کد رو میزارم:

عملکرد برنامه به این شکل هست که وقتی فرم رو Minimize کنید میره تو Tray و وقتی تو Tray روش کلیک کنید فرم میاد بالا.

1- یه پروژه جدید ایجاد کنید.
2- کد زیر رو برای فرم کپی کنید.


Option Explicit

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
Me.WindowState = vbNormal
Me.Show
TrayRemove Me
End If
End Sub

Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then
TrayShow Me, App.ProductName
Me.Hide
End If
End Sub

این کد رو هم تو یه ماژول کپی کنید.



Option Explicit

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean

Private 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
End Type

Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2

'API Constants
Private Const WM_USER = &H400
Private Const WM_USER_TRAY = WM_USER + 1
Private Const WM_MOUSEMOVE = &H200
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_MBUTTONDOWN = &H207
Private Const WM_MBUTTONUP = &H208
Private Const WM_MBUTTONDBLCLK = &H209

Private Const NIF_INFO = &H10
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

Private oTray As NOTIFYICONDATA

Sub TrayRemove(CForm As Form)
oTray.cbSize = Len(oTray)
oTray.hwnd = CForm.hwnd
oTray.uID = 1&
Shell_NotifyIcon NIM_DELETE, oTray
End Sub

Sub TrayBalloonTip(Optional ByVal sBalloonText As String = vbNullString, Optional ByVal sBalloonTitle As String = vbNullString, Optional ByVal nIcon As Integer = -1, Optional ByVal nTimeOut As Integer = -1)
With oTray
.uFlags = .uFlags Or NIF_INFO
.uTimeOutAndVersion = IIf(nTimeOut = -1, 3000, nTimeOut)
.szInfo = sBalloonText & Chr$(0)
.szInfoTitle = sBalloonTitle & Chr$(0)
.dwInfoFlags = nIcon
End With
Call Shell_NotifyIcon(NIM_MODIFY, oTray)
oTray.uFlags = oTray.uFlags And Not NIF_INFO
End Sub

Sub TrayShow(ByVal CForm As Form, ByVal sToolTip As String)
On Error GoTo EndLine
oTray.cbSize = Len(oTray)
oTray.hwnd = CForm.hwnd
oTray.uID = 1&
oTray.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
oTray.uCallbackMessage = WM_MOUSEMOVE
oTray.hIcon = CForm.Icon 'CForm.Icon
oTray.szTip = sToolTip & vbNullChar
Shell_NotifyIcon NIM_ADD, oTray

EndLine:
End Sub

Sub TrayToolTip(ByVal sToolTip As String)
oTray.szTip = sToolTip
Shell_NotifyIcon NIM_MODIFY, oTray
End Sub

Veteran
دوشنبه 01 اسفند 1390, 19:13 عصر
جناب mtp موقعه ای که توی tray هست به چه شک برای برنامه tooltip بزاریم ؟

shahabbasic
دوشنبه 01 اسفند 1390, 19:37 عصر
سلام
تشکر ولی داداش اون فایل ضمیمه ای که دادی کار نمیکنه
لطفا لینکشو عوض کنید
ممنون
لینک سالمه کنترل هم سالمه

alizanganeh
سه شنبه 02 اسفند 1390, 00:33 صبح
لینک سالمه کنترل هم سالمه




بابا بخدا لینک خرابه
کد ها سالمه
ولی لینک کار نمیکنه ارور میده
لطفا اگر میشه روی سرورهایی مثل uploadbaz بذارید
ممنون

shahabbasic
سه شنبه 02 اسفند 1390, 00:46 صبح
هر چی تو بخوای جیگر
http://www.uploadbaz.com/52xeuuuapr6p

M.T.P
سه شنبه 02 اسفند 1390, 00:56 صبح
جناب mtp موقعه ای که توی tray هست به چه شک برای برنامه tooltip بزاریم ؟

به جای App.productname یک رشته String دلخواه ارسال کن.



TrayShow Me, App.ProductName

alizanganeh
سه شنبه 02 اسفند 1390, 01:17 صبح
هر چی تو بخوای جیگر
http://www.uploadbaz.com/52xeuuuapr6p



دمت گرم
عاشقتم

alizanganeh
سه شنبه 02 اسفند 1390, 01:55 صبح
ممنون
چند تا مشکل داشتم و یک چیزایی کم داشت که خودم درستش کردم
فقط یک چیزی
میگم میشه کاری کرد که عمل miniminze و رفتن به نوار اعلان با کلیک بر روی یک دکمه (command) انجام بشه؟
یا اینکه به کنار 3 دکمه ی خروج و بزرگ نمایی صفحه و چوک کردن در نوار عنوان دکمه ای دلخواه اضافه کنیم ؟
ممنون میشم اگر هردو رو جواب بدید
ممنون

shahabbasic
سه شنبه 02 اسفند 1390, 12:18 عصر
میگم میشه کاری کرد که عمل miniminze و رفتن به نوار اعلان با کلیک بر روی یک دکمه (command) انجام بشه؟
Private Sub Command1_Click()
Me.WindowState = 1
End Sub

یا اینکه به کنار 3 دکمه ی خروج و بزرگ نمایی صفحه و چوک کردن در نوار عنوان دکمه ای دلخواه اضافه کنیم ؟
تا جایی که میدونم کلید Help میتونی اضافه کنی

alizanganeh
سه شنبه 02 اسفند 1390, 15:45 عصر
نه دیگه وقتی دکمه باشه دیگه به نوار عنوان نیازی نیست
ممنون واسه وقتی که گذاشتی
و برای آخرین سوال :

میگم الان با کدی که دادی وقتی روی یک دکمه مینویسیم فرم به نوار اعلان میره
حالا میشه این دکمه با این خاصیت هم باشه و دکمه ی دیگری باشه که با کلیک بر روی اون فرم بصورت عادی miniminze بشه
یعنی بره به نوار وظیفه
ممنون

alizanganeh
سه شنبه 02 اسفند 1390, 16:08 عصر
آقا سوال بالایی رو خودم درست کردم
ممنون
خیلی گلید

shahabbasic
سه شنبه 02 اسفند 1390, 19:54 عصر
ببین اگر در کلید فقط از کد :

Me.WindowState = 1
استفاده کنی فرم به حالت معمول مینیمایز میشه ولی اگر بعلاوه ی این دستور بنویسی : me.hide دیگه موقع حداقل رسانی آیکن برنامه به تسکبار نمیره و فقط در ناحیه اعلان دیده میشه

ho3ein.3ven
سه شنبه 02 اسفند 1390, 20:40 عصر
Tray1.Icon = "d:/Bookmark.ico"
از این دستور خطا میگیره

shahabbasic
سه شنبه 02 اسفند 1390, 21:06 عصر
:گیج: بذار ببینم شما در آدرس از / نباید استفاده کنی از \ استفاده کن ببین درست میشه؟ شاید اشتباه لپی کردی ! :اشتباه:
اصلا برای راحتی در مد دیزاین آیکن مورد نظرتو از خصوصیات این کنترل انتخاب کن

alizanganeh
چهارشنبه 03 اسفند 1390, 02:57 صبح
:گیج: بذار ببینم شما در آدرس از / نباید استفاده کنی از \ استفاده کن ببین درست میشه؟ شاید اشتباه لپی کردی ! :اشتباه:
اصلا برای راحتی در مد دیزاین آیکن مورد نظرتو از خصوصیات این کنترل انتخاب کن


آره مشکل همینه
منم همین مشکل رو داشتم
از توی خصوصیات آیکون دادم درست شد

alizanganeh
چهارشنبه 03 اسفند 1390, 03:00 صبح
ببین اگر در کلید فقط از کد :

Me.WindowState = 1
استفاده کنی فرم به حالت معمول مینیمایز میشه ولی اگر بعلاوه ی این دستور بنویسی : me.hide دیگه موقع حداقل رسانی آیکن برنامه به تسکبار نمیره و فقط در ناحیه اعلان دیده میشه



ممنون ولی من یک کار دیگه ای کردم
اومد یک متغیر سراسری تعریف کردم توی general

بعد توی دکمه ای که قرار بره در نوار وظیفه اومدم مقدار اون متغیر رو 0 کردم + اجرای دستور Me.WindowState = 1

و توی دکمه ای قراره بره توی نوار اعلان مقدار متغیر رو 1 کردم و دوباره همون دستور بالایی رو نوشتم

و توی form_resize گفتم اون کدی که شما دادی رو وقتی اجرا کن که اون متغیر مقدارش 1 باشه
اینطوری با زدن هر دکمه عملی متفاوت انجام میشه

سید حمید حق پرست
چهارشنبه 03 اسفند 1390, 13:57 عصر
سلام دوستان گل
این یه سورس بدون کامپوننت


موفق باشید


یا علی (ع)

alizanganeh
چهارشنبه 03 اسفند 1390, 18:25 عصر
سلام
آقا یک سوال
من همه ی این کارا رو انجام دادم و برای آیکونم در نوار اعلان منو گذاشتم و منوی خود فرم رو hide کردم و فرم بدون منو هستش
و حالا اومدم مثل فرم اصلی برنامم برای منو ها آیکون گذاشتم ولی آیکون ها رو فقط زمانی نشون میده که فرم روی خود فرم hide نشده باشه
یعنی وقتی visible منوهای خودفرمی که قراره بره توی نوار اعلان رو false میکنم دیگه آیکون منو ها رو توی popupmenu در نوار اعلان نمایش نمیده
ولی وقتی visible منو ها رو true میکنم آیکون منو ها رو توی popupmenu در نوار اعلان نشون میده
چیکار دکنم که بتونم visible منوها رو false کنم و آیکون منو ها روی popupmenu توی نوار اعلان نشون بده
ممنون

alizanganeh
پنج شنبه 04 اسفند 1390, 08:21 صبح
آقا کسی جواب مارو بلد نیست ؟

alizanganeh
پنج شنبه 04 اسفند 1390, 23:43 عصر
آقا هیچی نمتونه جواب بده ؟
اگر کسی بلده بگه هم فوریه و هم مهم
ممنون