终结指定QQ号的进程,如"号码为871116754", VB具体代码? 高手快来!!谢谢!!

解决方案 »

  1.   

    上面这位回答者,你说的这种方法可能只适用于QQ2009以前版本!我试过,这种方法用在QQ2009上行不通的,有没有高手,另有高法!!
      

  2.   

    QQ聊天窗口标题要先搜集, 例如以前的 "与 XX 聊天中" 只要一弹出就立马自动关掉它 这很简但实现的, 你可以先列出 黑名单 随时检测.
      

  3.   

    当QQ2009使用什么什么窗体绘画技术后,通过标题寻找已经不太可能了诶...给两个思路:QQ不得操作对应QQ号目录下的文件么...QQ在通知区域有提示信息吧,里面好象包含QQ号的...错杀一千,不放过一个...全杀
      

  4.   

    枚举QQ的句柄下面所有的子窗口进程, 发现(用 Instr) 某某某 就干掉这个进程 不管你用的是啥QQ版本 
      

  5.   

    直接用findwindow获取QQ2009的窗体句柄然后通过窗体句柄获取进程PID然后获得进程句柄再杀死不就可以了吗,我记得貌似前几天试过可以关掉QQ2009的进程的
      

  6.   

    可以通过任务栏的QQ的提示信息枚举出相关QQ号码,查找出和该号码的QQ主程序的窗口句柄,然后关闭该进程就可以了
      

  7.   


    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了。
      

  8.   

    可以参考MSDN的例子pwalk扫描所有名字为qq.exe的进程的内存,发现特定字符串的用shell调用pstools里面的pskill工具杀掉该进程。
      

  9.   

    暂时能想到的:
    1.FindWindow(vbNullString,QQNum & "_QQMusic_SmallClient") (09以前的版本)
    2.通过托盘图标的Tip获取对应的QQ号码->对应的PID  (通用性不好)
    3.通过搜索QQ进程的内存得到对应QQ号码,然后判断不要再求全部代码咯,这类例子自己搜一搜,都是有的。
      

  10.   

    用AutoHotKey软件估计也能搞定。