麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Visual Basic > 正文

VB編程控制電腦桌面圖標(biāo)

2023-06-12 12:11:27
字體:
供稿:網(wǎng)友

利用VB完全控制你的桌面圖標(biāo) Windows中的桌面圖標(biāo)的排列方式是否讓你感到厭倦而想按照自己的想法排列圖標(biāo)。是否想改變桌面圖標(biāo)文字的背景而不使在圖標(biāo)文字下出現(xiàn)一個個難看的色塊。這里我要介紹如何通過VB來對桌面的圖標(biāo)進(jìn)行徹底的改變。

 其實(shí)在Windows下的桌面以及任務(wù)欄等都是窗口對象,我們可以利用Windows API函數(shù)FindWindow和FindWindowEx來獲得它們的句柄,然后再調(diào)用其它相應(yīng)的API函數(shù)來控制它們。而放置桌面圖標(biāo)的窗口是一個ListView對象,利用SendMessage函數(shù)向該窗口發(fā)送相應(yīng)的消息,就可以對圖標(biāo)進(jìn)行修改了。下面是具體的程序?qū)崿F(xiàn)。

首先在VB中建立一個新的工程,在Form1中加入三個CommandButton控件,然后在Form1的代碼窗口中加入以下代碼:

Option Explicit
Private Type POINTAPI x As Long, y As Long
End Type
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long
Private Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) _ As Long
Private Declare Function SendMessageP Lib "user32" Alias "SendMessageA" (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) _ As Long
Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, _ lpSysColor As Long, lpColorValues As Long) As Long
Const LVM_FIRST = &H1000
Const LVM_GETITEMCOUNT = LVM_FIRST + 4
Const LVM_SETTEXTCOLOR = LVM_FIRST + 36
Const LVM_REDRAWITEMS = LVM_FIRST + 21
Const LVM_SETTEXTBKCOLOR = LVM_FIRST + 38
Const LVM_SETITEMPOSITION = LVM_FIRST + 15
Const COLOR_DESKTOP = 1'RestoreColor函數(shù)回復(fù)默認(rèn)的圖標(biāo)文字顏色和背景

Sub RestoreColor()
  Dim lColor As Long
  lColor = GetSysColor(COLOR_DESKTOP)
  SetSysColors 1, COLOR_DESKTOP, lColor
End Sub

Sub SetIconText(clFore, clBack As Long, bTrans As Boolean)
Dim hWindow As Long
Dim lItemCount As Long '通過三步查找到放置桌面圖表的窗口
hWindow = FindWindow("Progman", "Program Manager")
hWindow = FindWindowEx(hWindow, 0, "SHELLDLL_DefView", "")
hWindow = FindWindowEx(hWindow, 0, "SysListView32", "")
If bTrans Then '透明背景
  SendMessage hWindow, LVM_SETTEXTBKCOLOR, 0, &HFFFFFFFF
Else '非透明背景
  SendMessage hWindow, LVM_SETTEXTBKCOLOR, 0, clBack
End If
 
'設(shè)置圖標(biāo)文字的顏色
SendMessage hWindow, LVM_SETTEXTCOLOR, 0, clFore '重新繪制所有的圖標(biāo)
lItemCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
SendMessage hWindow, LVM_REDRAWITEMS, 0, lItemCount - 1
 '更新窗口
UpdateWindow hWindowEnd SubSub ArrangeDesktopIcon(iWidth As Integer, iHeight As Integer)
Dim hWindow As Long Dim i1, i2, i, iCount As Integer
Dim po As POINTAPI
'通過三步查找到放置桌面圖表的窗口
hWindow = FindWindow("Progman", "Program Manager")
hWindow = FindWindowEx(hWindow, 0, "SHELLDLL_DefView", "")
hWindow = FindWindowEx(hWindow, 0, "SysListView32", "")
i1 = 20: i2 = 20
iCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
For i = 0 To iCount - 1
po.x = i1: po.y = i2
'發(fā)送LVM_SETITEMPOSITION消息排列圖標(biāo)
Call SendMessage(hWindow, LVM_SETITEMPOSITION, i, i2 * 65536 + i1)
i1 = i1 + iWidth
If i1 > ((Screen.Width / 15) - 32) Then
i1 = 20
i2 = i2 + iHeight
End If
Next i
SendMessage hWindow, LVM_REDRAWITEMS, 0, iCount - 1
'更新窗口
UpdateWindow hWindow
End Sub

Private Sub Command1_Click()
 '設(shè)置圖標(biāo)文字的顏色為藍(lán)色,背景色為黑色,背景為透明
SetIconText vbBlue, vbBlack, True
End
SubPrivate Sub Command2_Click()
RestoreColor
End Sub
Private Sub Command3_Click()
'以100x100像素為單位排列圖標(biāo)
ArrangeDesktopIcon 100, 100
End Sub
Private Sub Form_Load()
Command1.Caption = "設(shè)置文字背景"
Command2.Caption = "恢復(fù)文字背景"
Command3.Caption = "排列桌面圖標(biāo)"
End Sub

運(yùn)行程序,點(diǎn)擊Command1,可以看到桌面圖標(biāo)的文本景色變成了藍(lán)色,如果你設(shè)置了桌面圖片,還可以看到文字的背景變成了透明的而不是在下面有一個難看的色塊,點(diǎn)擊Command2可以恢復(fù)Windows的默認(rèn)設(shè)置,點(diǎn)擊Command3可以使你的桌面圖標(biāo)以橫排的方式排列,不過前提是要將桌面圖標(biāo)的自動排列屬性設(shè)置為False。 以上程序在VB6,Windows98,Windows2000下運(yùn)行通過。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 欧美精品一区二区三区久久久 | 国产精品美女久久久久久不卡 | 精品国产呦系列在线看 | 一区二区三区小视频 | 成年免费在线视频 | 毛片视频网址 | 一级色毛片 | 国产青草视频在线观看视频 | 黄色影院在线看 | 国产精品成人一区二区三区电影毛片 | bt 自拍 另类 综合 欧美 | 久久视频精品 | 成人国产精品齐天大性 | 欧美精品成人一区二区三区四区 | 日本欧美一区二区三区在线观看 | av视在线 | 免费在线观看国产精品 | 色交视频| www久久国产 | 美国一级黄色毛片 | 亚洲精品日韩色噜噜久久五月 | 欧美老外a级毛片 | 亚洲爱爱网站 | 国产精品欧美久久久久一区二区 | 一级α片免费看刺激高潮视频 | av免费不卡国产观看 | 成人在线视频免费播放 | 亚洲免费片 | 国产亚洲精品综合一区91555 | 色天使中文字幕 | 久久久www成人免费精品 | 成人在线视频免费观看 | 色播久久 | 曰批全过程120分钟免费69 | 在线成人免费av | 色综合久久久久久久久久 | 国产精品一区在线看 | 久久精品a一级国产免视看成人 | 日本中文字幕久久 | 小视频免费在线观看 | 欧美精品一区二区三区在线 |