小弟初学:)

解决方案 »

  1.   

    1)SetWindowsHookEx
    2)CreateToolhelpSnapshot
    BOOL GetProcessList( )
    {
      HANDLE hProcessSnap;
      HANDLE hProcess;
      PROCESSENTRY32 pe32;
      DWORD dwPriorityClass;  // Take a snapshot of all processes in the system.
      hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
      if( hProcessSnap == INVALID_HANDLE_VALUE )
      {
        printError( "CreateToolhelp32Snapshot (of processes)" );
        return( FALSE );
      }  // Set the size of the structure before using it.
      pe32.dwSize = sizeof( PROCESSENTRY32 );  // Retrieve information about the first process,
      // and exit if unsuccessful
      if( !Process32First( hProcessSnap, &pe32 ) )
      {
        printError( "Process32First" );  // Show cause of failure
        CloseHandle( hProcessSnap );     // Must clean up the snapshot object!
        return( FALSE );
      }  // Now walk the snapshot of processes, and
      // display information about each process in turn
      do
      {
        printf( "\n\n=====================================================" );
        printf( "\nPROCESS NAME:  %s", pe32.szExeFile );
        printf( "\n-----------------------------------------------------" );    // Retrieve the priority class.
        dwPriorityClass = 0;
        hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, pe32.th32ProcessID );
        if( hProcess == NULL )
          printError( "OpenProcess" );
        else
        {
          dwPriorityClass = GetPriorityClass( hProcess );
          if( !dwPriorityClass )
            printError( "GetPriorityClass" );
          CloseHandle( hProcess );
        }    printf( "\n  process ID        = 0x%08X", pe32.th32ProcessID );
        printf( "\n  thread count      = %d",   pe32.cntThreads );
        printf( "\n  parent process ID = 0x%08X", pe32.th32ParentProcessID );
        printf( "\n  Priority Base     = %d", pe32.pcPriClassBase );
        if( dwPriorityClass )
          printf( "\n  Priority Class    = %d", dwPriorityClass );    // List the modules and threads associated with this process
        ListProcessModules( pe32.th32ProcessID );
        ListProcessThreads( pe32.th32ProcessID );  } while( Process32Next( hProcessSnap, &pe32 ) );  // Don't forget to clean up the snapshot object!
      CloseHandle( hProcessSnap );
      return( TRUE );
    }
      

  2.   

    1 全局钩子钩API,参考《Windows核心编程》第22章2 获得进程ID,进程内用GetCurrentProcessId,进程外用CreateToolhelp32Snapshot
      

  3.   

    全局钩子,用dll
    2,Toolhelp32系列函数
      

  4.   

    我也请教一个钩子程序问题:
    已有一个程序在全屏顶层执行。
    在它的界面上双击鼠标右键时要将自己的程序置为最顶层覆盖掉他。这个该怎么做啊?
    有没有DEMO
    谢谢!
    [email protected]
      

  5.   

    http://www.mzkp.com/cooldog/blogview.asp?logID=2&cateID=1
      

  6.   

    鼠标钩子的Demo网上有很多
    hMouseHook  = ::SetWindowsHookEx(WH_MOUSE, MouseProc, (HINSTANCE)DllHandle, 0);
    LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
    {
             //在这里做你要做的就行了
    return CallNextHookEx(hMouseHook,nCode,wParam,lParam);
    }
      

  7.   

    //获得当前正在运行的所有进程
    GetAllCurrentProcess()
    {
    HANDLE h_SnapShot;
    h_SnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); PROCESSENTRY32 processListStr;
    processListStr.dwSize = sizeof(PROCESSENTRY32); BOOL ret = false; ret = Process32First(h_SnapShot, &processListStr); CListBox *lstBox; lstBox = (CListBox *)GetDlgItem(IDC_LIST1);
    lstBox->ResetContent(); int i = 0; while(ret)
    {
    lstBox->InsertString(i, processListStr.szExeFile);
    processID[i] = processListStr.th32ProcessID;
    ret = Process32Next(h_SnapShot, &processListStr);
    i++;
    }
    }
      

  8.   

    to:65963() 
    鼠标双击事件是:WM_RBUTTONDBLCLK
      

  9.   

    TO :楼主
    关于用钩子,我有几个小例子,你要吗?
    要的话找我:[email protected]