VB를 사용하여 바탕 화면 아이콘을 완벽하게 제어하세요. Windows의 바탕 화면 아이콘 배열이 지겹고 자신의 아이디어에 따라 아이콘을 배열하고 싶으십니까? 아이콘 텍스트 아래에 보기 흉한 색상 블록이 나타나지 않게 하면서 데스크탑 아이콘 텍스트의 배경을 변경하시겠습니까? 여기서는 VB를 통해 바탕 화면 아이콘을 완전히 변경하는 방법을 소개하고 싶습니다.
실제로 Windows의 바탕 화면과 작업 표시줄은 모두 창 개체입니다. Windows API 함수 FindWindow 및 FindWindowEx를 사용하여 핸들을 얻은 다음 다른 해당 API 함수를 호출하여 제어할 수 있습니다. 바탕화면 아이콘이 위치한 창은 ListView 객체로 SendMessage 함수를 이용하여 해당 메시지를 창으로 보내고, 아이콘을 수정할 수 있습니다. 다음은 구체적인 프로그램 구현입니다.
먼저 VB에서 새 프로젝트를 만들고 Form1에 세 개의 CommandButton 컨트롤을 추가한 후 Form1의 코드 창에 다음 코드를 추가합니다.
Option Explicit
Private Type POINTAPI x만큼 길다, y만큼 길다
끝 유형
Private 선언 함수 FindWindow Lib user32 Alias FindWindowA _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private 선언 함수 FindWindowEx Lib user32 Alias FindWindowExA _ (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long
비공개 선언 함수 UpdateWindow Lib user32(ByVal hwnd As Long)
Private 선언 함수 SendMessage Lib user32 Alias SendMessageA (ByVal _ hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) _ As Long
Private 선언 함수 SendMessageP Lib user32 Alias 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 Long) 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 함수는 기본 아이콘 텍스트 색상과 배경을 복원합니다.
하위복원색상()
희미한 색상
lColor = GetSysColor(COLOR_DESKTOP)
SetSysColors 1, COLOR_DESKTOP, lColor
서브 끝
하위 SetIconText(clFore, clBack As Long, bTrans As Boolean)
흐릿한 hWindow
Dim lItemCount As Long '데스크탑 차트가 위치한 창을 3단계로 찾아보세요
hWindow = FindWindow(Progman, 프로그램 관리자)
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
종료 조건
'아이콘 텍스트 색상 설정
SendMessage hWindow, LVM_SETTEXTCOLOR, 0, clFore '모든 아이콘 다시 그리기
lItemCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
SendMessage hWindow, LVM_REDRAWITEMS, 0, lItemCount - 1
'업데이트 창
UpdateWindow hWindowEnd SubSub AlignDesktopIcon(iWidth As Integer, iHeight As Integer)
Dim hWindow As Long Dim i1, i2, i, i는 정수로 계산됩니다.
딤포를 POINTAPI로
'데스크톱 차트가 있는 창을 3단계로 찾아보세요.
hWindow = FindWindow(Progman, 프로그램 관리자)
hWindow = FindWindowEx(hWindow, 0, SHELLDLL_DefView, )
hWindow = FindWindowEx(hWindow, 0, SysListView32, )
i1 = 20: i2 = 20
iCount = SendMessage(hWindow, LVM_GETITEMCOUNT, 0, 0)
i = 0의 경우 iCount - 1
po.x = i1: po.y = i2
'아이콘을 정렬하기 위해 LVM_SETITEMPOSITION 메시지를 보냅니다.
SendMessage 호출(hWindow, LVM_SETITEMPOSITION, i, i2 * 65536 + i1)
i1 = i1 + i폭
i1 > ((Screen.Width / 15) - 32)이면
i1 = 20
i2 = i2 + iHeight
종료 조건
다음은 내가
SendMessage hWindow, LVM_REDRAWITEMS, 0, iCount - 1
'업데이트 창
업데이트창 hWindow
서브 끝
개인 하위 Command1_Click()
'아이콘 텍스트 색상을 파란색으로, 배경색을 검정색으로, 배경을 투명하게 설정합니다.
SetIconText vbBlue, vbBlack, 참
끝
SubPrivate 하위 Command2_Click()
색상 복원
서브 끝
개인 하위 Command3_Click()
'100x100픽셀 단위로 아이콘을 배열합니다.
정렬DesktopIcon 100, 100
서브 끝
비공개 하위 Form_Load()
Command1.Caption = 텍스트 배경 설정
Command2.Caption = 텍스트 배경 복원
Command3.Caption = 바탕 화면 아이콘 정렬
서브 끝
프로그램을 실행하고 Command1을 클릭하면 바탕 화면 아이콘의 텍스트 배경이 파란색으로 바뀌는 것을 볼 수 있습니다. 바탕 화면 그림을 설정하면 아래의 보기 흉한 색상 블록 대신 텍스트의 배경이 투명해지는 것을 볼 수 있습니다. Windows의 기본 설정을 복원하려면 Command3을 클릭하여 데스크탑 아이콘을 수평으로 정렬하십시오. 단, 데스크탑 아이콘의 자동 정렬 속성이 False로 설정된 경우에만 해당됩니다. 위 프로그램은 VB6, Windows98 및 Windows2000에서 성공적으로 실행됩니다.