如何用SetWindowsHookEx() 监视一个程序然后 关闭他呢 我在网上看了SetWindowsHookEx() 的使用方法可是一头雾水 请指教
如何全盘监视这个进程呢????
xiexie

解决方案 »

  1.   

    关闭进程不需要用钩子。先Process32First/Process32Next列举进程,找到目标进程后直接TerminateProcess 具体可查MSDN全盘监视进程的什么?SetWindowsHookEx就可以全盘监视进程的所有消息。
      

  2.   

    我的意思是
    打开一个程序然后sewwindowshookex得到这个程序的句柄然后再使用terminateprocess 关闭
      

  3.   


    hook了之后terminateProcess的话,程序挂了,你还hook啥??
      

  4.   

    teminateprocess 黑sewindowshookex是另一个程序 
    例如 打开notepad。exe 然后 打开 hook程序扫描进程有就关掉notepad 没有就sleep
      

  5.   

    进程句柄不是用sewwindowshookex得到的
      

  6.   

    对不起打错了 是SetWindowsHookEx() 
    求解
      

  7.   

    这个比较简单 你Timer轮玄进程列表,得到你想要的进程的句丙 就可以了.当染你先要调整令牌提升至debug权限,有权限去获取整个进程列表.如下代码:
    BOOL EnableDebugPrivilege(BOOL fEnable) //调整令牌提升至debug权限
    {
    BOOL fOK = FALSE; HANDLE nToken; if (OpenProcess(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&nToken))
    {
    TOKEN_PRIVILEGES tp;
    tp.PrivilegeCount = 1;
    LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid); tp.Privileges[0].Attributes = fEnable?SE_PRIVILEGE_ENABLED:0; AdjustTokenPrivileges(nToken,FALSE,&tp,sizeof(tp),NULL,NULL); fOK = (GetLastError()==ERROR_SUCCESS);
    CloseHandle(nToken);
    } return(fOK);
    }
    然后EnumProcessModules(
        HANDLE hProcess,
        HMODULE *lphModule,
        DWORD cb,
        LPDWORD lpcbNeeded
        );DWORD
    WINAPI
    GetModuleBaseNameA(
        HANDLE hProcess,
        HMODULE hModule,
        LPSTR lpBaseName,
        DWORD nSize
        );
     OpenProcess(  PROCESS_ALL_ACCESS, FALSE, aProcesses[i]);
    等函数的结合你就可以完成 进程的便利.