استخدم VB للتحكم الكامل في أيقونات سطح المكتب لديك هل سئمت من ترتيب أيقونات سطح المكتب في نظام التشغيل Windows وترغب في ترتيب الأيقونات وفقًا لأفكارك الخاصة؟ هل تريد تغيير خلفية نص أيقونة سطح المكتب دون التسبب في ظهور كتل ملونة قبيحة أسفل نص الأيقونة؟ سأقدم هنا كيفية تغيير أيقونات سطح المكتب بالكامل من خلال VB.
في الواقع، يعد سطح المكتب وشريط المهام في Windows بمثابة كائنات نافذة. يمكننا استخدام وظائف Windows API FindWindow وFindWindowEx للحصول على المقابض الخاصة بهما، ثم استدعاء وظائف API المقابلة الأخرى للتحكم فيها. النافذة التي تم وضع رمز سطح المكتب فيها هي كائن ListView. استخدم وظيفة SendMessage لإرسال الرسالة المقابلة إلى النافذة، ويمكن تعديل الرمز. فيما يلي تنفيذ البرنامج المحدد.
أولاً، قم بإنشاء مشروع جديد في VB، وأضف ثلاثة عناصر تحكم CommandButton إلى Form1، ثم قم بإضافة التعليمة البرمجية التالية إلى نافذة التعليمات البرمجية الخاصة بـ Form1:
Option Explicit
نوع خاص POINTAPI x طويل، y طويل
نوع النهاية
إعلان خاص عن وظيفة FindWindow Lib user32 الاسم المستعار FindWindowA _ (ByVal lpClassName كسلسلة، ByVal lpWindowName كسلسلة) طالما
وظيفة التصريح الخاص FindWindowEx Lib user32 الاسم المستعار FindWindowExA _ (ByVal hWnd1 طويل، ByVal hWnd2 طويل، ByVal lpsz1 كسلسلة، _ ByVal lpsz2 كسلسلة) طويل
إعلان خاص عن وظيفة UpdateWindow Lib user32 (ByVal hwnd As Long) طالما
إعلان خاص وظيفة SendMessage Lib user32 الاسم المستعار SendMessageA (ByVal _ hwnd As Long، ByVal wMsg As Long، ByVal wParam As Long، ByVal lParam As Long) _ As Long
إعلان خاص عن وظيفة SendMessageP Lib user32 الاسم المستعار SendMessageA (ByVal _ hwnd As Long، ByVal wMsg As Long، ByVal wParam As Long، lParam As Any) _ As Long
إعلان خاص عن وظيفة GetSysColor Lib user32 (ByVal nIndex As Long) طالما
إعلان خاص عن وظيفة SetSysColors Lib user32 (ByVal nChanges As Long، _ lpSysColor As Long، lpColorValues As Long)
كونست LVM_FIRST = &H1000
Const LVM_GETITEMCOUNT = LVM_FIRST + 4
Const LVM_SETTEXTCOLOR = LVM_FIRST + 36
Const LVM_REDRAWITEMS = LVM_FIRST + 21
كونست LVM_SETTEXTBKCOLOR = LVM_FIRST + 38
كونست LVM_SETITEMPOSITION = LVM_FIRST + 15
Const COLOR_DESKTOP = 1 تعمل وظيفة RestoreColor على استعادة لون نص الرمز الافتراضي وخلفيته
لون الاستعادة الفرعية ()
خافت اللون طالما
lColor = GetSysColor(COLOR_DESKTOP)
SetSysColors 1، COLOR_DESKTOP، lColor
نهاية الفرعية
Sub SetIconText (clFore، clBack As Long، bTrans As Boolean)
خافت hWindow طالما
Dim lItemCount As Long 'ابحث عن النافذة التي تم وضع مخطط سطح المكتب فيها في ثلاث خطوات
hWindow = FindWindow(Progman، مدير البرامج)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
إذا bTrans ثم "خلفية شفافة".
SendMessage hWindow، LVM_SETTEXTBKCOLOR، 0، &HFFFFFFFF
آخر "خلفية غير شفافة
SendMessage hWindow، LVM_SETTEXTBKCOLOR، 0، clBack
نهاية إذا
"ضبط لون نص الرمز."
SendMessage hWindow، LVM_SETTEXTCOLOR، 0، clFore 'إعادة رسم كافة الرموز
lItemCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
نافذة SendMessage، LVM_REDRAWITEMS، 0، lItemCount - 1
"نافذة التحديث."
UpdateWindow hWindowEnd SubSub ArrangeDesktopIcon(iWidth كعدد صحيح، iHeight كعدد صحيح)
تعتيم النافذة بطول Dim i1، i2، i، iCount As Integer
خافت بو كما POINTAPI
"ابحث عن النافذة حيث يتم وضع مخطط سطح المكتب في ثلاث خطوات."
hWindow = FindWindow(Progman، مدير البرامج)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
ط1 = 20: ط2 = 20
iCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
لأني = 0 إلى iCount - 1
po.x = i1: po.y = i2
'أرسل رسالة LVM_SETITEMPOSITION لترتيب الرموز
اتصل بـ SendMessage (hWindow، LVM_SETITEMPOSITION، i، i2 * 65536 + i1)
i1 = i1 + iWidth
إذا i1> ((عرض الشاشة / 15) - 32) ثم
ط1 = 20
i2 = i2 + iHeight
نهاية إذا
التالي ط
SendMessage hWindow، LVM_REDRAWITEMS، 0، iCount - 1
"نافذة التحديث."
UpdateWindow hWindow
نهاية الفرعية
أمر فرعي خاص1_Click()
"اضبط لون نص الرمز على اللون الأزرق، ولون الخلفية على الأسود، والخلفية على الشفافية."
SetIconText vbBlue، vbBlack، صحيح
نهاية
SubPrivate Sub Command2_Click()
استعادة اللون
نهاية الفرعية
أمر فرعي خاص3_Click()
"ترتيب الرموز بوحدات 100 × 100 بكسل."
ترتيب سطح المكتب أيقونة 100، 100
نهاية الفرعية
نموذج فرعي خاص_تحميل()
Command1.Caption = تعيين خلفية النص
Command2.Caption = استعادة خلفية النص
Command3.Caption = ترتيب أيقونات سطح المكتب
نهاية الفرعية
قم بتشغيل البرنامج وانقر فوق Command1. يمكنك أن ترى أن خلفية النص لرمز سطح المكتب تتحول إلى اللون الأزرق إذا قمت بتعيين صورة لسطح المكتب، يمكنك أيضًا أن ترى أن خلفية النص تصبح شفافة بدلاً من كتلة الألوان القبيحة أدناه لاستعادة الإعدادات الافتراضية لنظام التشغيل Windows، انقر فوق Command3 لترتيب أيقونات سطح المكتب أفقيًا، ولكن فقط إذا تم تعيين خاصية الترتيب التلقائي لأيقونات سطح المكتب على False. يعمل البرنامج أعلاه بنجاح تحت VB6، Windows98، وWindows2000.