PDA

View Full Version : یک سوال در مورد مخفی کردم آیکن از System Tray



ali_nob
سه شنبه 28 اردیبهشت 1389, 11:09 صبح
با سلام خدمت دوستان
من می خواهم آیکن یکی از برنامه ها رو که در System Tray نمایش داده می شود را مخفی کنم و متاسفانه خود این برنامه این قابلیت رو نداره که از طریق خودش این کار رو انجام داد لذا باید از طریق registry این کار انجام شود من اینکه چطوری بشه کل آیکن های System Tray رو مخفی کرد رو پیدا کردم ولی یک برنامه خاص رو هنوز موفق نشدم پیدا کنم لذا لطفا اگه در این خصوص تجربه ای دارید ممنون می شوم
ترجیحا بشه این کار رو توسط VB.NET , Sctipt و یا توسط یک فایل reg از طریق registry این کار را انجام داد
ممنون

pashaie
سه شنبه 28 اردیبهشت 1389, 12:04 عصر
برای انجام این کار باید از توابع API WIN32 استفاده کنی
یکی از راه حل ها به صورت که اول با نرم افزار Spy++ که همرا Visual Studio هست، caption و class او آیکون رو پیدا کنی.
بعد تو برنامه با استفاده از تابع FindWindow هندل اون پنجره رو پیدا کنی و سپس با ShowWindow اون پنجره رو مخفی کنی

در ضمن این مطلب به بخش Javascript مربوط نمی شه

ali_nob
چهارشنبه 29 اردیبهشت 1389, 07:09 صبح
از راهنماییتون متشکرم

ali_nob
چهارشنبه 29 اردیبهشت 1389, 23:31 عصر
برای انجام این کار باید از توابع API WIN32 استفاده کنی
یکی از راه حل ها به صورت که اول با نرم افزار Spy++ که همرا Visual Studio هست، caption و class او آیکون رو پیدا کنی.
بعد تو برنامه با استفاده از تابع FindWindow هندل اون پنجره رو پیدا کنی و سپس با ShowWindow اون پنجره رو مخفی کنی

در ضمن این مطلب به بخش Javascript مربوط نمی شه


سلام
من تا اینجا پیش رفتم لطفا راهنمایی نمایید :




Dim StrlpClassName As String = "TForm1"
Dim StrlpWindowsName As String = "Dosprn"

Dim hWnd As Integer
hWnd = FindWindow(StrlpClassName, StrlpWindowsName)
MsgBox(StrlpWindowsName & " : " & hWnd)


که تا بع مقدار 0 رو بر می گردونه حالا برای Show و Hide کردن آیکن مربوطه چکازی باید انجام بدم
متشکرم

pashaie
پنج شنبه 30 اردیبهشت 1389, 00:27 صبح
که تا بع مقدار 0 رو بر می گردونه

آقا من یه نکته ای رو یادم رفته بود که بگم! اون پنجره چون خودش زیر مجموعه پنجره دیگه ایه، باید اول پدرش رو پیدا کنی و بعد با تابع FindWindowEx پنجره مورد نظر.
این کارم خیلی ها قبلا انجام دادن و منم با یه سرچ کوچولو پیداش کردم و اینم کدش:



Dim StrlpClassName As String = "TForm1"
Dim StrlpWindowsName As String = "Dosprn"

Dim hWnd As Integer
hWnd = FindWindow("Shell_TrayWnd", null)
hWnd = FindWindowEx(hWnd, 0, "TrayNotifyWnd", null)
hWnd = FindWindowEx(hWnd, 0, "SysPager", null)
hWnd = FindWindowEx(hWnd, 0, "TForm1", "Dosprn")
ShowWindow( hWnd, Sw_Hide)

ali_nob
پنج شنبه 30 اردیبهشت 1389, 10:35 صبح
سلام
از توجه شما متشکرم
من برنامه شما رو تست کردم البته به جای Null عبارت vbNullString رو قرار می دادم و پس از اجرا خطای :


Additional information: Unable to find an entry point named FindWindowEx in DLL user32.

رو داد !
ضمنا این خطا رو در خط :
hWnd = FindWindowEx(hWnd, 0, "TrayNotifyWnd", vbNullString)
داد
لطفا کمک کنید

pashaie
پنج شنبه 30 اردیبهشت 1389, 11:27 صبح
این کد رو به اول برنامه اضافه کن



Public Declare Function FindWindowEx Lib "user32" (ByVal hWnd1 As Long,
ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

ali_nob
پنج شنبه 30 اردیبهشت 1389, 12:28 عصر
این کد رو به اول برنامه اضافه کن



Public Declare Function FindWindowEx Lib "user32" (ByVal hWnd1 As Long,
ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

سلام
این کد در اول برنامه وجود دارد

pashaie
پنج شنبه 30 اردیبهشت 1389, 14:10 عصر
اگه با VB دات نت کار می کنی باید کد زیر رو وارد کنی



<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
ByVal childAfter As IntPtr, _
ByVal lclassName As String, _
ByVal windowTitle As String) As IntPtr
End Function

ali_nob
پنج شنبه 30 اردیبهشت 1389, 18:10 عصر
اگه با VB دات نت کار می کنی باید کد زیر رو وارد کنی



<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
ByVal childAfter As IntPtr, _
ByVal lclassName As String, _
ByVal windowTitle As String) As IntPtr
End Function

بله با VB.NET کار می کنم ولی این چطور کدی است ؟

ali_nob
شنبه 01 خرداد 1389, 10:59 صبح
سلام
منظور من این بود که من از کد زیر رو add کرده بودم :

Public Declare Function FindWindowEx Lib "user32" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

کد پیشنهادی شما که با فرمت VB.NET نیست ! چه تغییراتی باید در اون بدم ؟
ممنون

roya.adely
شنبه 01 خرداد 1389, 12:06 عصر
چطور میتونم توی یک صفححه به صفحه ی دیگه دسترسی پیدا کنم