ใช้ 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 As String, ByVal lpWindowName As String) ตราบใดที่
ฟังก์ชั่นการประกาศส่วนตัว FindWindowEx Lib user32 นามแฝง FindWindowExA _ (ByVal hWnd1 ตราบเท่าที่ ByVal hWnd2 ตราบเท่าที่ ByVal lpsz1 As String, _ ByVal lpsz2 As String) ตราบเท่าที่
ฟังก์ชั่นการประกาศส่วนตัว UpdateWindow Lib user32 (ByVal hwnd As Long) ตราบเท่าที่
ฟังก์ชั่นประกาศส่วนตัว SendMessage Lib user32 นามแฝง SendMessageA (ByVal _ hwnd ตราบใดที่ ByVal wMsg ตราบใดที่ ByVal wParam ตราบใดที่ ByVal lParam ตราบใดที่) _ ตราบใดที่
ฟังก์ชั่นประกาศส่วนตัว SendMessageP Lib user32 นามแฝง SendMessageA (ByVal _ hwnd ตราบใดที่ ByVal wMsg ตราบใดที่ ByVal wParam ตราบใดที่ lParam เท่า ๆ กัน) _ ตราบใดที่
ฟังก์ชั่นประกาศส่วนตัว GetSysColor Lib user32 (ByVal nIndex ตราบเท่าที่) ตราบเท่าที่
ฟังก์ชั่นการประกาศส่วนตัว SetSysColors Lib user32 (ByVal nChanges As Long, _ lpSysColor As Long, lpColorValues As Long) ตราบใดที่
ค่าคงที่ LVM_FIRST = &H1000
ค่าคงที่ LVM_GETITEMCOUNT = LVM_FIRST + 4
ค่าคงที่ LVM_SETTEXTCOLOR = LVM_FIRST + 36
ค่าคงที่ LVM_REDRAWITEMS = LVM_FIRST + 21
ค่าคงที่ LVM_SETTEXTBKCOLOR = LVM_FIRST + 38
ค่าคงที่ LVM_SETITEMPOSITION = LVM_FIRST + 15
Const COLOR_DESKTOP = 1'ฟังก์ชัน RestoreColor จะคืนค่าสีข้อความและพื้นหลังของไอคอนเริ่มต้น
ย่อยRestoreColor()
หรี่สีให้นานที่สุด
lColor = GetSysColor(COLOR_DESKTOP)
SetSysColors 1, COLOR_DESKTOP, lColor
จบหมวดย่อย
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 แล้วก็ 'พื้นหลังโปร่งใส'
ส่งข้อความ hWindow, LVM_SETTEXTBKCOLOR, 0, &HFFFFFFFF
มิฉะนั้น 'พื้นหลังไม่โปร่งใส'
ส่งข้อความ hWindow, LVM_SETTEXTBKCOLOR, 0, clBack
สิ้นสุดถ้า
'กำหนดสีของข้อความไอคอน
SendMessage hWindow, LVM_SETTEXTCOLOR, 0, clFore 'วาดไอคอนทั้งหมดใหม่
lItemCount = ส่งข้อความ (hWindow, LVM_GETITEMCOUNT, 0, 0)
ส่งข้อความ hWindow, LVM_REDRAWITEMS, 0, lItemCount - 1
'หน้าต่างอัพเดต
อัปเดตหน้าต่าง hWindowEnd SubSub ArrangeDesktopIcon (iWidth As Integer, iHeight As Integer)
Dim hWindow ตราบเท่าที่ Dim i1, i2, i, iCount As Integer
ติ่มซำเป็น POINTAPI
'ค้นหาหน้าต่างที่วางแผนภูมิเดสก์ท็อปในสามขั้นตอน
hWindow = FindWindow (Progman, ผู้จัดการโปรแกรม)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
i1 = 20: i2 = 20
iCount = ส่งข้อความ (hWindow, LVM_GETITEMCOUNT, 0, 0)
สำหรับ i = 0 ถึง iCount - 1
po.x = i1: po.y = i2
'ส่งข้อความ LVM_SETITEMPOSITION เพื่อจัดเรียงไอคอน
โทรส่งข้อความ(hWindow, LVM_SETITEMPOSITION, i, i2 * 65536 + i1)
i1 = i1 + iWidth
ถ้า i1 > ((Screen.Width / 15) - 32) จากนั้น
i1 = 20
i2 = i2 + iความสูง
สิ้นสุดถ้า
ถัดไป
ส่งข้อความ hWindow, LVM_REDRAWITEMS, 0, iCount - 1
'หน้าต่างอัพเดต
อัพเดตหน้าต่าง hWindow
จบหมวดย่อย
คำสั่งย่อยส่วนตัว1_คลิก()
'ตั้งค่าสีข้อความของไอคอนเป็นสีน้ำเงิน สีพื้นหลังเป็นสีดำ และพื้นหลังเป็นโปร่งใส
SetIconText vbBlue, vbBlack, จริง
จบ
คำสั่งย่อยส่วนตัวย่อย2_คลิก()
คืนค่าสี
จบหมวดย่อย
คำสั่งย่อยส่วนตัว3_คลิก()
'จัดเรียงไอคอนเป็นหน่วย 100x100 พิกเซล
จัดเรียงไอคอนเดสก์ท็อป 100, 100
จบหมวดย่อย
แบบฟอร์มย่อยส่วนตัว_Load()
Command1.Caption = ตั้งค่าพื้นหลังข้อความ
Command2.Caption = กู้คืนพื้นหลังข้อความ
Command3.Caption = จัดเรียงไอคอนเดสก์ท็อป
จบหมวดย่อย
เรียกใช้โปรแกรมแล้วคลิก Command1 คุณจะเห็นว่าพื้นหลังข้อความของไอคอนเดสก์ท็อปเปลี่ยนเป็นสีน้ำเงิน หากคุณตั้งค่ารูปภาพเดสก์ท็อป คุณจะเห็นว่าพื้นหลังของข้อความกลายเป็นโปร่งใสแทนที่จะเป็นบล็อกสีที่น่าเกลียดด้านล่าง เพื่อคืนค่าการตั้งค่าเริ่มต้นของ Windows คลิก Command3 เพื่อจัดเรียงไอคอนเดสก์ท็อปของคุณในแนวนอน แต่เฉพาะในกรณีที่คุณสมบัติการจัดเรียงอัตโนมัติของไอคอนเดสก์ท็อปถูกตั้งค่าเป็นเท็จ โปรแกรมข้างต้นทำงานได้สำเร็จภายใต้ VB6, Windows98 และ Windows2000