2023年12月15日发(作者:)
'ÉùÃ÷¶¨Òå
Option Explicit
Private Const WM_USER = &H400
Private Const TB_BUTTONCOUNT = (WM_USER + 24)
Private Const TB_HIDEBUTTON = (WM_USER + 4)
Private Const TB_GETBUTTONTEXTA = (WM_USER + 45)
Private Const TB_AUTOSIZE = (WM_USER + 33)
Private Const MEM_COMMIT = &H1000
Private Const MEM_RESERVE = &H2000
Private Const MEM_RELEASE = &H8000
Private Const PAGE_READWRITE = &H4
Private Const PROCESS_VM_OPERATION = (&H8)
Private Const PROCESS_VM_READ = (&H10)
Private Const PROCESS_VM_WRITE = (&H20)
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 SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam
As Any) As Long
Private Declare Function VirtualAllocEx Lib "" (ByVal
hProcess As Long, lpAddress As Any, ByRef dwSize As Long, ByVal
flAllocationType As Long, ByVal flProtect As Long) As Long
Private Declare Function VirtualFreeEx Lib "" (ByVal
hProcess As Long, lpAddress As Any, ByRef dwSize As Long, ByVal
dwFreeType As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal
dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal
dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As
Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal
hWnd As Long, lpdwProcessId As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal
hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize
As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal
hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize
As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long
'Form´°Ìå
'ÐèÒªµÄ¿Ø¼þ£ºCommand1£¬Command2£¬Command3£¬ListBox
Private Sub Command1_Click() 'Òþ²ØÖ¸¶¨Í¼±ê
Dim pIdExplorer As Long, hwnd2 As Long, hExplorer As Long, lpIconText
As Long
Dim i As Integer
Dim BtnCount As Integer
Dim IconText As String
hwnd2 = FindWindow("Shell_TrayWnd", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "TrayNotifyWnd", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "SysPager", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "ToolbarWindow32", vbNullString)
GetWindowThreadProcessId hwnd2, pIdExplorer
hExplorer = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or
PROCESS_VM_WRITE, False, pIdExplorer)
lpIconText = VirtualAllocEx(ByVal hExplorer, ByVal 0&,
Len(IconText), MEM_COMMIT Or MEM_RESERVE, PAGE_READWRITE)
BtnCount = SendMessage(hwnd2, TB_BUTTONCOUNT, 0, 0)
Dim lLen As Long, sBuff As String
For i = 0 To BtnCount - 1
IconText = Space$(256)
lLen = SendMessage(hwnd2, TB_GETBUTTONTEXTA, i, ByVal
lpIconText)
ReadProcessMemory hExplorer, ByVal lpIconText, ByVal IconText,
Len(IconText), 0
If lLen <> -1 Then IconText = Left$(IconText, InStr(1, IconText,
Chr$(0)) - 1)
If IconText = (dex) Then '
Ìæ»»ÎªÐèÒªÒþ²ØµÄͼ±êÃû³Æ£º¾ÍÊÇÊó±ê·ÅÔÚͼ±êÉÏʱÏÔʾµÄÎÄ×Ö
SendMessage hwnd2, TB_HIDEBUTTON, i, ByVal True
SendMessage hwnd2, TB_AUTOSIZE, 0, 0
End If
Next
VirtualFreeEx hExplorer, lpIconText, Len(IconText), MEM_RELEASE
CloseHandle hExplorer
End Sub
Private Sub Command2_Click() 'ÏÔʾָ¶¨Í¼±ê
Dim pIdExplorer As Long, hwnd2 As Long, hExplorer As Long, lpIconText
As Long
Dim i As Integer
Dim BtnCount As Integer
Dim IconText As String
hwnd2 = FindWindow("Shell_TrayWnd", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "TrayNotifyWnd", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "SysPager", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "ToolbarWindow32", vbNullString)
GetWindowThreadProcessId hwnd2, pIdExplorer
hExplorer = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or
PROCESS_VM_WRITE, False, pIdExplorer)
lpIconText = VirtualAllocEx(ByVal hExplorer, ByVal 0&,
Len(IconText), MEM_COMMIT Or MEM_RESERVE, PAGE_READWRITE)
BtnCount = SendMessage(hwnd2, TB_BUTTONCOUNT, 0, 0)
Dim lLen As Long, sBuff As String
For i = 0 To BtnCount - 1
IconText = Space$(256)
lLen = SendMessage(hwnd2, TB_GETBUTTONTEXTA, i, ByVal
lpIconText)
ReadProcessMemory hExplorer, ByVal lpIconText, ByVal IconText,
Len(IconText), 0
If lLen <> -1 Then IconText = Left$(IconText, InStr(1, IconText,
Chr$(0)) - 1)
If IconText = (dex) Then ' '
Ìæ»»ÎªÐèÒªÒþ²ØµÄͼ±êÃû³Æ£º¾ÍÊÇÊó±ê·ÅÔÚͼ±êÉÏʱÏÔʾµÄÎÄ×Ö
SendMessage hwnd2, TB_HIDEBUTTON, i, ByVal False
SendMessage hwnd2, TB_AUTOSIZE, 0, 0
End If
Next
VirtualFreeEx hExplorer, lpIconText, Len(IconText), MEM_RELEASE
CloseHandle hExplorer
End Sub
Private Sub Command3_Click() 'Ë¢ÐÂͼ±êÁбí
Dim pIdExplorer As Long, hwnd2 As Long, hExplorer As Long, lpIconText
As Long
Dim i As Integer
Dim BtnCount As Integer
Dim IconText As String
hwnd2 = FindWindow("Shell_TrayWnd", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "TrayNotifyWnd", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "SysPager", vbNullString)
hwnd2 = FindWindowEx(hwnd2, 0, "ToolbarWindow32", vbNullString)
GetWindowThreadProcessId hwnd2, pIdExplorer
hExplorer = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or
PROCESS_VM_WRITE, False, pIdExplorer)
lpIconText = VirtualAllocEx(ByVal hExplorer, ByVal 0&,
Len(IconText), MEM_COMMIT Or MEM_RESERVE, PAGE_READWRITE)
BtnCount = SendMessage(hwnd2, TB_BUTTONCOUNT, 0, 0)
Dim lLen As Long, sBuff As String
For i = 0 To BtnCount - 1
IconText = Space$(256)
lLen = SendMessage(hwnd2, TB_GETBUTTONTEXTA, i, ByVal
lpIconText)
ReadProcessMemory hExplorer, ByVal lpIconText, ByVal IconText,
Len(IconText), 0
If lLen <> -1 Then IconText = Left$(IconText, InStr(1, IconText,
Chr$(0)) - 1)
m IconText
Next
VirtualFreeEx hExplorer, lpIconText, Len(IconText), MEM_RELEASE
CloseHandle hExplorer
End Sub
Private Sub Form_Load()
Command3_Click
Command1_Click
End Sub


发布评论