PDA

View Full Version : سوال: چرخش ایکن های دسکتاپ



akbarg64
چهارشنبه 07 مهر 1389, 13:51 عصر
سلام.خسته نباشید دوستان.چطوری میشه آیکن های دسکتاپ رو به چرخش درآورد؟؟؟؟؟ممنون میشم راهنمایی کنید.

Slytherin
چهارشنبه 07 مهر 1389, 15:48 عصر
منظور شما را از چرخش درک نمی کنم، منظورتان از چرخش دقیقا چیست؟
چرخش آیکون ها حول محور خودشان؟
جا به جایی جای آیکون ها به جای هم؟
چرخش آیکون ها دور یک مدار فرضی؟

akbarg64
پنج شنبه 08 مهر 1389, 12:14 عصر
سلام.نه حول یه محور خاص.مثلا به صورت دایره یا هر شکل دیگه.ممنون

Slytherin
پنج شنبه 08 مهر 1389, 13:03 عصر
فکر می کنم هدف شما این باشد که از همچین کدی به عنوان یک چیزی شبیه سایدبار استفاده کنید.
در مورد چرخش آیکون ها حول محور چیزی نمی دونم اما پیشنهاد من این است:
1.برنامه ای جداگانه با بک گراند نا مرئی طراحی شود.
2.برنامه های مورد نظر با دراگ اند دراپ (یا هر روش دیگری) به برنامه اضافه شوند. (به این شکل که آبکون برنامه در یک ایمیج ظاهر گردد و بر کلیک بر روی آن ایمیج برنامه اصلی فراخوانی شود.)
3.هر طوری که می خواهید ایمیج ها را به دستورات ساده به حرکت در بیاورید!

پی نوشت: در مورد گذینه 1 اگر سورسش را در دسترس ندارید می تونم کمک کنم.
پی نوشت: در مورد بخش اول قسمت 2 اطلاعاطی ندارم اما می دونم شدنی هست.
پی نوشت: اگر مراحل 1 و 2 را انجام بدهید، مرحله 3 واقعا ساده خواهد بود به راحی می تونید اون رو بنویسید، با این حال اگر کمکی خواستید در خدمتم:چشمک:

akbarg64
پنج شنبه 08 مهر 1389, 17:54 عصر
سلام.ممنون.اگه در مورد , مورد اول یه سورس بزارین ممنون میشم.:قلب:

Slytherin
پنج شنبه 08 مهر 1389, 18:48 عصر
سورس نامرئی کردن بک گراند فرم.

akbarg64
پنج شنبه 08 مهر 1389, 19:38 عصر
بازم ممنون.اما مشکل من چرخش آیکن های دسکتاپ بود نه فرم نامرئی.فک کردم در رابطه با همین موضوع هست.

Felony
پنج شنبه 08 مهر 1389, 22:23 عصر
بازم ممنون.اما مشکل من چرخش آیکن های دسکتاپ بود نه فرم نامرئی.فک کردم در رابطه با همین موضوع هست.

تا جایی که اطلاع دارم همچین API توسط ویندوز ارائه نمیشه ، تا به حال هم تو هیچ برنامه ای همچین چیزی ندیدم ، البته میتونید این کار رو تو برنامه خودتون به صورت زیر پیاده کنید :

1- لیست برنامه های روی میزکار رو به دست بیارید و آیکن هاش رو به عنوان عکس یا ... تو فرم برنامتون بارگزاری کنید و اون عکسها یا ... رو بچرخونید ، برنامه هایی که آیکن ها رو با ترتیب های مختلفی مرتب یا چیدمان فانتزی میکنن از این روش استفاده میکنن ، البته اونها برای نمایش آیکن ها از DirectX یا OpenGL تو برنامه استفاده میکنن .

Slytherin
پنج شنبه 08 مهر 1389, 22:26 عصر
بازم ممنون.اما مشکل من چرخش آیکن های دسکتاپ بود نه فرم نامرئی.فک کردم در رابطه با همین موضوع هست.

با توجه به نکاتی که در بالا گفتم،
منظور من هم همون چیزی هست که جناب "مجتبی تاجیک" گفتند.

vbhamed
جمعه 09 مهر 1389, 11:51 صبح
سلام

آيكونهاي روي صفحه دسكتاپ يك آبجكت از نوع ListView هستند
بايد هندل اون رو بدست بياريد
من نرم افزاري ديدم كه اين كار رو مي كرد و به صورتهاي مختلف آيكونها رو مي چيد
حتي باهاشون ساعت درست كرده بود !

returnx
جمعه 09 مهر 1389, 12:15 عصر
سلام

آيكونهاي روي صفحه دسكتاپ يك آبجكت از نوع ListView هستند
بايد هندل اون رو بدست بياريد
من نرم افزاري ديدم كه اين كار رو مي كرد و به صورتهاي مختلف آيكونها رو مي چيد
حتي باهاشون ساعت درست كرده بود !
نرم افزار Desktop Icon Toy این کار انجام میده .یک Search کن و دانلودش کن شاید به دردت بخوره.

akbarg64
جمعه 09 مهر 1389, 13:02 عصر
سلام

آيكونهاي روي صفحه دسكتاپ يك آبجكت از نوع ListView هستند
بايد هندل اون رو بدست بياريد
من نرم افزاري ديدم كه اين كار رو مي كرد و به صورتهاي مختلف آيكونها رو مي چيد
حتي باهاشون ساعت درست كرده بود !
سلام.ممنون.میشه بیشتر توضیح بدین.چطور میشه اینکار رو انجام داد.؟؟؟؟؟؟؟

vbhamed
شنبه 10 مهر 1389, 15:05 عصر
سلام
تو سايت يا گوگل جستجو كنيد نمونه هست
ضمنا ممكنه تو ويندوز Xp صفحه پرش داشته باشه

ali190
دوشنبه 12 مهر 1389, 13:26 عصر
سلام
این هم یک نمونه برنامه (http://www.idesksoft.com/download.html)
البته سورس نیست

akbarg64
سه شنبه 13 مهر 1389, 21:57 عصر
:گریه::گریه::گریه::گریه:من سرچ کردم اما هیچی عایدم نشد.:گریه::گریه:

vb2005
پنج شنبه 15 مهر 1389, 09:59 صبح
می تونید از این کد استفاده کنید:




Option Explicit
Private Declare Function SendMessageByLong& Lib "user32" Alias _
"SendMessageA" (ByVal hwnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)

Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String)

Private Declare Function FindWindowEx& Lib "user32" Alias "FindWindowExA" _
(ByVal hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpClassName _
As String, ByVal lpWindowName As String)

Private Const LVM_GETTITEMCOUNT& = (&H1000 + 4)
Private Const LVM_SETITEMPOSITION& = (&H1000 + 15)

Dim hdesk&, i&, icount&, X&, Y&

Public Sub MoveIcons()
hdesk = FindWindow("progman", vbNullString)
hdesk = FindWindowEx(hdesk, 0, "shelldll_defview", vbNullString)
hdesk = FindWindowEx(hdesk, 0, "syslistview32", vbNullString)
'hdesk is the handle of the Desktop's syslistview32

icount = SendMessageByLong(hdesk, LVM_GETTITEMCOUNT, 0, 0)

'0 is "My Computer"
For i = 0 To icount - 1
X = 40 * i: Y = 40 * i 'set the position parameters in pixel
'The wParam must be i
Call SendMessageByLong(hdesk, LVM_SETITEMPOSITION, i, CLng(X + Y * &H10000))
Next
End Sub

Private Sub Command1_Click()
Call MoveIcons
End Sub

akbarg64
پنج شنبه 15 مهر 1389, 14:55 عصر
بسیار عالی.فقط چطور میشه به شکل دایره دراورد؟؟؟بازم ممنون.:تشویق::تشویق::تشویق::ت شویق::تشویق:

vbhamed
جمعه 16 مهر 1389, 19:18 عصر
سلام
اينم دايره
فقط حتما اول روي Desktop راست كليك كنيد و از زير منوي Arrange Icon by گزينه هاي Auto Arrange و Align To Grid رو غير فعال كنيد

Option Explicit

Private Declare Function SendMessageByLong& _
Lib "user32" _
Alias "SendMessageA" (ByVal hwnd&, _
ByVal wMsg&, _
ByVal wParam&, _
ByVal lParam&)

Private Declare Function FindWindow& _
Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String)

Private Declare Function FindWindowEx& _
Lib "user32" _
Alias "FindWindowExA" (ByVal hWndParent As Long, _
ByVal hWndChildAfter As Long, _
ByVal lpClassName As String, _
ByVal lpWindowName As String)

Private Const LVM_GETTITEMCOUNT& = (&H1000 + 4)

Private Const LVM_SETITEMPOSITION& = (&H1000 + 15)

Dim hdesk&, i&, icount&, X&, Y&, j&, d!

Public Sub MoveIcons()

hdesk = FindWindow("progman", vbNullString)
hdesk = FindWindowEx(hdesk, 0, "shelldll_defview", vbNullString)
hdesk = FindWindowEx(hdesk, 0, "syslistview32", vbNullString)
'hdesk is the handle of the Desktop's syslistview32

icount = SendMessageByLong(hdesk, LVM_GETTITEMCOUNT, 0, 0)

For i = 0 To icount - 1
X = 20 * i
d = (360 / icount) * i * 3.14 / 180
Y = 350 + 330 * Sin(d)
X = 490 + 330 * Cos(d)
'The wParam must be i
Call SendMessageByLong(hdesk, LVM_SETITEMPOSITION, i, CLng(X + Y * &H10000))

For j = 0 To 100

DoEvents
Next
Next

End Sub

Private Sub Command1_Click()
Call MoveIcons
End Sub