Option Explicit 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 Const READ_CONTROL As Long = &H20000 Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000 Private Const STANDARD_RIGHTS_READ As Long = (READ_CONTROL) Private Const STANDARD_RIGHTS_EXECUTE As Long = (READ_CONTROL) Private Const STANDARD_RIGHTS_ALL As Long = &H1F0000 Private Const STANDARD_RIGHTS_WRITE As Long = (READ_CONTROL) Private Const SYNCHRONIZE As Long = &H100000 Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF) Private Const PROCESS_TERMINATE As Long = (&H1) Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Long, lpdwProcessId As Long) As Long Private Const WM_USER As Long = &H400 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 Const TB_BUTTONCOUNT As Long = (WM_USER + 24) Private Const TB_HIDEBUTTON As Long = (WM_USER + 4) Private Const TB_GETBUTTON As Long = (WM_USER + 23) Private Const TB_GETBITMAP As Long = (WM_USER + 44) Private Const TB_DELETEBUTTON As Long = (WM_USER + 22) Private Const TB_ADDBUTTONS As Long = (WM_USER + 20) Private Const TB_INSERTBUTTON As Long = (WM_USER + 21) Private Const TB_ISBUTTONHIDDEN As Long = (WM_USER + 12) Private Const ILD_NORMAL As Long = &H0 Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function WriteProcessMemory Lib "kernel32.dll" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function ReadProcessMemory Lib "kernel32.dll" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long Private Declare Function VirtualAllocEx Lib "kernel32.dll" (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 "kernel32.dll" (ByVal hProcess As Long, lpAddress As Any, ByRef dwSize As Long, ByVal dwFreeType As Long) As Long Private Const PROCESS_VM_OPERATION As Long = (&H8) Private Const PROCESS_VM_READ As Long = (&H10) Private Const PROCESS_VM_WRITE As Long = (&H20) Private Const MEM_RESERVE As Long = &H2000 Private Const MEM_COMMIT As Long = &H1000 Private Const MEM_RELEASE As Long = &H8000 Private Const PAGE_READWRITE As Long = &H4 Private Sub Command1_Click() Dim lngTemp As Long Dim lngTray Dim lngPID As Long Dim lngPID2 As Long Dim hProcess As Long Dim lngProcess As Long Dim lngAddress As Long Dim lngCount As Long Dim lngButtons As Long Dim ret As Long Dim lngTextAdr As Long Dim lngHwndAdr As Long Dim lngButtonID As Long Dim hIcon As Long Dim lngHwnd As Long Dim lpFileName As String * 1024 Dim i As Long Dim strBuff(1024) As Byte Dim strText As String Dim lngTrayDC As Long Dim Start As Long Dim str As String lngTemp = FindWindow("Shell_TrayWnd", vbNullString) lngTemp = FindWindowEx(lngTemp, 0, "TrayNotifyWnd", vbNullString) lngTemp = FindWindowEx(lngTemp, 0, "SysPager", vbNullString) lngTray = FindWindowEx(lngTemp, 0, "ToolbarWindow32", vbNullString) Debug.Print "lngTray="; lngTray ret = GetWindowThreadProcessId(lngTray, lngPID) hProcess = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0, lngPID) lngAddress = VirtualAllocEx(hProcess, ByVal 0&, ByVal 4096&, MEM_COMMIT, PAGE_READWRITE) lngButtons = SendMessage(lngTray, TB_BUTTONCOUNT, 0, 0)20分.给你贴2/3的代码- -。88走人 方法.获取QQ 每个进程都有一个pid。通过pid来结束进程就ok了。
Option Explicit
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 Const READ_CONTROL As Long = &H20000
Private Const STANDARD_RIGHTS_REQUIRED As Long = &HF0000
Private Const STANDARD_RIGHTS_READ As Long = (READ_CONTROL)
Private Const STANDARD_RIGHTS_EXECUTE As Long = (READ_CONTROL)
Private Const STANDARD_RIGHTS_ALL As Long = &H1F0000
Private Const STANDARD_RIGHTS_WRITE As Long = (READ_CONTROL)
Private Const SYNCHRONIZE As Long = &H100000
Private Const PROCESS_ALL_ACCESS As Long = (STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF)
Private Const PROCESS_TERMINATE As Long = (&H1)
Private Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Private Const WM_USER As Long = &H400
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 Const TB_BUTTONCOUNT As Long = (WM_USER + 24)
Private Const TB_HIDEBUTTON As Long = (WM_USER + 4)
Private Const TB_GETBUTTON As Long = (WM_USER + 23)
Private Const TB_GETBITMAP As Long = (WM_USER + 44)
Private Const TB_DELETEBUTTON As Long = (WM_USER + 22)
Private Const TB_ADDBUTTONS As Long = (WM_USER + 20)
Private Const TB_INSERTBUTTON As Long = (WM_USER + 21)
Private Const TB_ISBUTTONHIDDEN As Long = (WM_USER + 12)
Private Const ILD_NORMAL As Long = &H0
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function WriteProcessMemory Lib "kernel32.dll" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32.dll" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function VirtualAllocEx Lib "kernel32.dll" (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 "kernel32.dll" (ByVal hProcess As Long, lpAddress As Any, ByRef dwSize As Long, ByVal dwFreeType As Long) As Long
Private Const PROCESS_VM_OPERATION As Long = (&H8)
Private Const PROCESS_VM_READ As Long = (&H10)
Private Const PROCESS_VM_WRITE As Long = (&H20)
Private Const MEM_RESERVE As Long = &H2000
Private Const MEM_COMMIT As Long = &H1000
Private Const MEM_RELEASE As Long = &H8000
Private Const PAGE_READWRITE As Long = &H4
Private Sub Command1_Click()
Dim lngTemp As Long
Dim lngTray
Dim lngPID As Long
Dim lngPID2 As Long
Dim hProcess As Long
Dim lngProcess As Long
Dim lngAddress As Long
Dim lngCount As Long
Dim lngButtons As Long
Dim ret As Long
Dim lngTextAdr As Long
Dim lngHwndAdr As Long
Dim lngButtonID As Long
Dim hIcon As Long
Dim lngHwnd As Long
Dim lpFileName As String * 1024
Dim i As Long
Dim strBuff(1024) As Byte
Dim strText As String
Dim lngTrayDC As Long
Dim Start As Long
Dim str As String
lngTemp = FindWindow("Shell_TrayWnd", vbNullString)
lngTemp = FindWindowEx(lngTemp, 0, "TrayNotifyWnd", vbNullString)
lngTemp = FindWindowEx(lngTemp, 0, "SysPager", vbNullString)
lngTray = FindWindowEx(lngTemp, 0, "ToolbarWindow32", vbNullString)
Debug.Print "lngTray="; lngTray
ret = GetWindowThreadProcessId(lngTray, lngPID)
hProcess = OpenProcess(PROCESS_ALL_ACCESS Or PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, 0, lngPID)
lngAddress = VirtualAllocEx(hProcess, ByVal 0&, ByVal 4096&, MEM_COMMIT, PAGE_READWRITE)
lngButtons = SendMessage(lngTray, TB_BUTTONCOUNT, 0, 0)20分.给你贴2/3的代码- -。88走人
方法.获取QQ 每个进程都有一个pid。通过pid来结束进程就ok了。
1.FindWindow(vbNullString,QQNum & "_QQMusic_SmallClient") (09以前的版本)
2.通过托盘图标的Tip获取对应的QQ号码->对应的PID (通用性不好)
3.通过搜索QQ进程的内存得到对应QQ号码,然后判断不要再求全部代码咯,这类例子自己搜一搜,都是有的。