ورود

View Full Version : قرار دادن آيكون برنامه كنار ساعت ويندوز



saman_itc
یک شنبه 17 شهریور 1387, 17:08 عصر
قرار دادن آيكون برنامه كنار ساعت ويندوز موضوع : قرار دادن يك آيكون از برنامه ي نوشته شده كنار ساعت كوچيك كامپيوتر

يك پروژه جديد ايجاد كنين و يه ماژول جديد بسازين و همه ي اين كدها رو تو اون ماژول بزارين
کد:


Public Const WM_RBUTTONUP = &H205
Global Const WM_MOUSEMOVE = &H200
Global Const NIM_ADD = 0
Global Const NIM_DELETE = 2
Global Const NIM_MODIFY = 1
Global Const NIF_ICON = 2
Global Const NIF_MESSAGE = 1
Global Const ABM_GETTASKBARPOS = &H5
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Type NOTIFYICONDATA
cbSize As Long
hwnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
Type APPBARDATA
cbSize As Long
hwnd As Long
uCallbackMessage As Long
uEdge As Long
rc As RECT
lParam As Long
End Type
Global Notify As NOTIFYICONDATA
Global BarData As APPBARDATA
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Declare Function SHAppBarMessage Lib "shell32.dll" (ByVal dwMessage As Long, pData As APPBARDATA) As Long
Sub AddIcon(Form1 As Form, IconID As Long, Icon As Object, ToolTip As String)
Dim Result As Long
BarData.cbSize = 36&
Result = SHAppBarMessage(ABM_GETTASKBARPOS, BarData)
Notify.cbSize = 88&
Notify.hwnd = Form1.hwnd
Notify.uID = IconID
Notify.uFlags = NIF_ICON Or NIF_MESSAGE Or NIF_TIP
Notify.uCallbackMessage = WM_MOUSEMOVE
Notify.hIcon = Icon
Notify.szTip = ToolTip & Chr$(0)
Result = Shell_NotifyIcon(NIM_ADD, Notify)
End Sub
Sub delIcon(IconID As Long)
Dim Result As Long
Notify.uID = IconID
Result = Shell_NotifyIcon(NIM_DELETE, Notify)
End Sub

حالا توي فرمتون هم يه متغير تعريف كنين يعني اين كد رو كپي كنين به اول فرمتون
کد:


Public IconObject As Object

بعدش توي تابع لود شدن فرمتون اين كدها ..
کد:


Set IconObject = Form1.IconAddIcon Form1, IconObject.Handle, IconObject, "TrayIcon"Me.Popup.Visible = False

و تو تابع خارج شدن از فرم (unload) اين كدها رو وارد كنين
کد:



delIcon IconObject.HandledelIcon Form1.Icon.Handle


حالا يه منو درست كنين و اسمش رو بزارين pupop بعد اينكه منو رو ساختين و چند تا زير شاخه بهش دادين اين كدها رو تو تابع mouse_move فرمتون كپي كنين
کد:


Static Message As LongMessage = X / Screen.TwipsPerPixelXSelect Case MessageCase WM_RBUTTONUP:Me.PopupMenu PopupEnd Select

اين كد براي اينه كه وقتي روي اون آيكون كنار ساعت راست كليك كنين يه منو باز بشه

موفق باشي

saghari
یک شنبه 17 شهریور 1387, 17:34 عصر
با سلام
ضمن تشکر از دوست عزیز فقط خواستم به این موضوع اشاره کنم که نحوه استفاده از NotifyIcon بصورت خیلی ساده و مفید در sample هایی که همراه net 2008 نصب میکنید وجود داره.
22918

saman_itc
یک شنبه 17 شهریور 1387, 22:10 عصر
با تشکر از شما .آيكون برنامه كنار ساعت ويندوز قرار نمیگیره .

Hossis
دوشنبه 11 آذر 1387, 20:28 عصر
قرار دادن آيكون برنامه كنار ساعت ويندوز موضوع : قرار دادن يك آيكون از برنامه ي نوشته شده كنار ساعت كوچيك كامپيوتر

يك پروژه جديد ايجاد كنين و يه ماژول جديد بسازين و همه ي اين كدها رو تو اون ماژول بزارين
موفق باشي

اين کد مال ويبي 6 هست نه دات نت!!!!!

saman_itc
دوشنبه 11 آذر 1387, 22:20 عصر
شما دات نتشو دارین؟

tamizi2
سه شنبه 12 آذر 1387, 07:58 صبح
وقتی پست اول آقا سامان رو می خوندم داشتم شاخ در می آوردم !
بعد فهمیدم اینو برای وی بی 6 نوشته خیالم راحت شد چون تو دات نت همونطور که دوستان اشاره کردن NotifyIconکار رو خیلی خیلی راحت کرده

Pr0grammer
سه شنبه 12 آذر 1387, 16:54 عصر
کاش مدیران وقتی این تاپیک رو از بخش VB.Net منتقل میکردند؛ این پست هایی که داده شده هم حذف می کردند؟!

من واسه خودم رو حذف کردم!

Ninja-Assassin
شنبه 24 فروردین 1392, 19:51 عصر
ســــــلام دوستان من مدتی هست دنبال این کد میگردم که خیلی خوشحال شدم اینجا پیدا کردم من این کد رو نوشتم ولی ارور داره نتونستم رفع کنم ای زحمتی نیست ارور این رو برام رفع کنید کار کنه واقعا ممنون میشم از لطفتون..

محسن واژدی
یک شنبه 25 فروردین 1392, 12:00 عصر
ســــــلام دوستان من مدتی هست دنبال این کد میگردم که خیلی خوشحال شدم اینجا پیدا کردم من این کد رو نوشتم ولی ارور داره نتونستم رفع کنم ای زحمتی نیست ارور این رو برام رفع کنید کار کنه واقعا ممنون میشم از لطفتون..
سلام علیکم

ضمیمه را بررسی کنید (البته برای راحتی کار سورس کمی ویرایش شده، به عنوان مثال تابع delicon نیاز تعریف هندل ندارد و ...)

موفق باشید

m-amin
یک شنبه 25 فروردین 1392, 13:03 عصر
من در موردش زیاد نمیدونم اما با این نرم افزار setup factory میشه نسخه exe رو با امکانات خیلی زیادی ساخت یکی از امکاناتش این بود که آیکون برنامه چه جاهایی قرار بگیره اونجا هرجایی که ایکون برنامت میتونست قرار بگیره رو نوشته بود. موفق باشی

SlowCode
یک شنبه 25 فروردین 1392, 13:58 عصر
من در موردش زیاد نمیدونم اما با این نرم افزار setup factory میشه نسخه exe رو با امکانات خیلی زیادی ساخت یکی از امکاناتش این بود که آیکون برنامه چه جاهایی قرار بگیره اونجا هرجایی که ایکون برنامت میتونست قرار بگیره رو نوشته بود. موفق باشی
نخیر.
چیزی که شما میگی مکان هایی که باید shortcut برنامه رو توش کپی کنه.
هیچ ستاپ سازی نمیتونه همچین کاری بکنه، شما خودت باید این قابلیت رو براش درست کنی.

Ninja-Assassin
یک شنبه 25 فروردین 1392, 18:26 عصر
واییییییی واقعا ممنون خیلی خیلی ممنووووون لطف کردین..
ببخشید میشه یه کاری کرد با بستن برنامه در قسمت Notification Area در حالت اجرا باقی بمونه که با کلیک بر روی اون برنامه ظاهر شه؟!

m-amin
دوشنبه 26 فروردین 1392, 22:52 عصر
گفتم شاید کمکی کنه بهش احتمال 90 در صد میدونستم این نیست :لبخند:

setroyd
سه شنبه 27 فروردین 1392, 14:01 عصر
شما میتونی یا با داشتن دوتا فرم اینکارو بکنی بگی اگه فرم اول بسته شد فرم 2 hide بشه و با کلیک روی notification دوباره فرم ظاهر بشه چرا 2 تا فرم چون اگه فرم 1 بسته شد 2 بمونه و برنامه close نشه این مبتدیش بود . پیشرفتش هم اینه که پیغام رو کنترل کنی و اگر خواست برنامه بسته بشه شما جلوش رو بگیری و فرم رو hide کنی .

Ninja-Assassin
سه شنبه 27 فروردین 1392, 15:03 عصر
ممنوووووون ولی مشکلم حل نشد!
یه کدی میخوام که بگه: اگر بر روی آیکن notification کلیک کردی در آن صورت form1 رو show کنه و اگر بر روی close فرم کلیک کردی فرم رو Hide کنه
اینو نمیتونم چطوری بنویسم ممنون میشم با سورس راهنماییم کنید..

setroyd
سه شنبه 27 فروردین 1392, 20:05 عصر
بیا ردیفش کردم با دابل کلیک دوباره فرم میاد بالا برای بستنش هم با منویی که گذاشتم ببند .

Ninja-Assassin
چهارشنبه 28 فروردین 1392, 00:00 صبح
ایول خیلی عالی بود واقعا ممنوووووووووووووون کارم راه افتاد مرسیییییی
ولی من وظیفه فرم2 رو نفهمیدم در هر حال ممنون
اگه میشد با تک کلید باز شه خیلی خوب میشد میشه؟؟
ببخشید یه مشکل دیگه هم داره وقتی close رو میزنم میره به notification فرم1 unload میشه که نمیخوام بشه چون برنامه من یه کاری انجام میده که میخوام کاربر با زدن close برنامه در notification به کار خود ادامه بده
ممنون میشم راهنمایی کنید..

setroyd
چهارشنبه 28 فروردین 1392, 12:33 عصر
خب شما جای unload بنویس invisible=false که برنامه باز هم به کار خود ادامه بده من برنامه رو سریع نوشتم گفتم که میخواستم روال کار دستت بیاد .

Ninja-Assassin
چهارشنبه 28 فروردین 1392, 18:44 عصر
منوووووووون داداش حله واقعا لطف کردی..

Ninja-Assassin
چهارشنبه 04 اردیبهشت 1392, 18:22 عصر
ســــــلام ببخشید دوباره مزاحم شدم
من یه قطعه کد گذاشتم در اون با زدن یه تیک برنامه در Start Up قرار میگیره میخوام اگه زحمتی نیست وقتی اون تیک برداشته میشه برنامه از Start Up برداشته شه
ممنون..

R2du-soft
چهارشنبه 04 اردیبهشت 1392, 19:06 عصر
آقایون یه چیزی! وتی روی آیکون در کنار ساعت کلیک میکنم حتما باید گزینه close all رو بزنی اگه هم نزنی اون close all بالا میمونه!! نمیشه کاریش کرد که روی صفحه کلیک کردیم اون close all بره؟

R2du-soft
چهارشنبه 04 اردیبهشت 1392, 21:26 عصر
دوستان اگه بخوام 2 تا منو تو برنامه هست رو توی system try نشون بدم ، کد رو از این:
Case WM_RBUTTONUP: Me.PopupMenu File
به چی باید تغییر بدم؟
لطفا راهنمایی کنید ، هرکاری میکنم نمیشه!

Ninja-Assassin
چهارشنبه 04 اردیبهشت 1392, 21:52 عصر
دوست عزیز خوب جلوی Me.PopupMenu بجای File نام منو رو مینویسی به همین راحتی..

R2du-soft
چهارشنبه 04 اردیبهشت 1392, 22:32 عصر
دوست عزیز خوب جلوی Me.PopupMenu بجای File نام منو رو مینویسی به همین راحتی..
میدونم داداش گلم
میگم من هم نوی file دارم و هم help ، حالا میخوام جفتش توی system try نشون بده!

R2du-soft
چهارشنبه 04 اردیبهشت 1392, 22:51 عصر
عزیزان با همون منو ، یه خط بین گزینه های منو اول و دوم انداختم و منو رو 1 دونه کردم! مشکل حل شد
اما هنوز شمکل اول هست! که وقتی کلیک راست میکنی و منصرف میشی و روی دسکتاپ کلیک میکنی ، منویی که از راست کلیک کردن ظاهر شده نمیره! اما برنامه های دیگه اینطور نیستن!

R2du-soft
چهارشنبه 04 اردیبهشت 1392, 23:35 عصر
شرمنده هی پست میدم من! باز یه مشکل دیگه!!
برنامه اگه باز شده باشه و توی system try باشه اگه باز بازش کنیم 1 بار دیگه باز میشه! نمیشه کارش کرد!!؟

Ninja-Assassin
پنج شنبه 05 اردیبهشت 1392, 08:06 صبح
عزیزان با همون منو ، یه خط بین گزینه های منو اول و دوم انداختم و منو رو 1 دونه کردم! مشکل حل شد
اما هنوز شمکل اول هست! که وقتی کلیک راست میکنی و منصرف میشی و روی دسکتاپ کلیک میکنی ، منویی که از راست کلیک کردن ظاهر شده نمیره! اما برنامه های دیگه اینطور نیستن!
این مشکل رو منم دارم رفع مشکلشو نمیدونم ولی باید حتما یه گزینه ای رو انتخاب کنی
دوستان دیگه حتما میدونن

Ninja-Assassin
پنج شنبه 05 اردیبهشت 1392, 08:07 صبح
دوستان یکی مشکل منم حل کنه خیلی واجبه 8 پست بالاتر
ممنووووووووون..

R2du-soft
پنج شنبه 05 اردیبهشت 1392, 17:46 عصر
دوستان یکی مشکل منم حل کنه خیلی واجبه 8 پست بالاتر
ممنووووووووون..
داداش اینم جواب مشکلت:




Private Sub ChkStart_Click()
If ChkStart.Value = 0 Then
Dim hregkey As Long
Dim subkey As String
Dim stringbuffer As String
subkey = "Software\Microsoft\Windows\CurrentVersion\Run"
retval = RegOpenKeyEx(HKEY_CURRENT_USER, subkey, 0, KEY_WRITE, hregkey)
If retval <> 0 Then
Debug.Print "Can't open the subkey"
Exit Sub
End If
stringbuffer = App.Path & "\" & App.EXEName & ".exe" & vbNullChar
retval = RegSetValueEx(hregkey, "My App", 0, REG_SZ, ByVal stringbuffer, Len(stringbuffer))
RegCloseKey hregkey
End If
End Sub



Private Sub ChkStart_Validate(Cancel As Boolean)
If ChkStart.Value = 1 Then
Shell ("C:\Program Files\JetAudio\JetAudio.exe")
Else
End If
End Sub

Private Sub Form_Load()
ChkStart.Value = GetSetting(App.Title, "ChkStart", "Value", "0")
End Sub

Private Sub Form_Unload(Cancel As Integer)
SaveSetting App.Title, "ChkStart", "Value", ChkStart.Value
End Sub



تو کدهات رنگ آبی یعنی کدت رو تغییر دادم و رنگ قرمز یعنی اضافه شده.
زمانی که تیک برداشته بشه ، برنامه پخش موزیک jet audio اجرا میشه! البته اگه روی سیستمت نصب باشه!

Ninja-Assassin
جمعه 06 اردیبهشت 1392, 00:01 صبح
ممنووووووون داداش
ولی نمیشه کاری کرد که وقتی تیک برداشته میشه برنامه از msconfig برداشته شه نه یه برنامه دیگه اجرا شه

R2du-soft
جمعه 06 اردیبهشت 1392, 08:17 صبح
برنامتون ویرایش کردم و چیزی که خواستی رو نوشتم برات:
زمانی که تیک برداشته بشه برنامه از startap میاد بیرون:
:لبخند:

103338

Ninja-Assassin
جمعه 06 اردیبهشت 1392, 09:12 صبح
واقعاااااااا ممنووووووون خیلی عالی بود درست همونی که من میخواستم
ولی همون کد رو به یه برنامه دیگه انتقال میدم به Private reg As New WshShell در جنرال کامپایل ارور میده!! :(
یعنی بعد از New گزینه ی WshShell رو نمیاره! چیکار کنم WshShell بیاد؟؟

R2du-soft
جمعه 06 اردیبهشت 1392, 15:32 عصر
واقعاااااااا ممنووووووون خیلی عالی بود درست همونی که من میخواستم
ولی همون کد رو به یه برنامه دیگه انتقال میدم به Private reg As New WshShell در جنرال کامپایل ارور میده!! :(
یعنی بعد از New گزینه ی WshShell رو نمیاره! چیکار کنم WshShell بیاد؟؟

شما از منوی project برید به reference و گزینه Windows Script Host Object Model رو تیک بزنید.
در بالای بالای برنامه ها حتما از


Private reg As New WshShell


استفاده کنید که برنامتون ارور نده

Ninja-Assassin
جمعه 06 اردیبهشت 1392, 17:48 عصر
وایییییی ممنووووون خیلی لطف کردی درس شد خیلی دنبال این موضوع بودم بازم ممنووووووون..