⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 如何监视windows下运行了哪些程序.txt

📁 以电子书的形式收集了VB一些常见问题解决方法,可以很方便的查找自己需要解决的问题.对一些VB初学者很用.
💻 TXT
字号:
如果你想监测你的查询运行之后又启动了哪些程序,可以使用SetWindowsHookEx (WH_SHELL)来建立一个钩子函数,不过这不太适合VB来做,最好使用C++或Delphi来做。
<END>
不管用VB,VC,DELPHI等,其实WINDOWS有关进程API 函数;都可以调用;不过首先得使用TLHELP32 来获得所有进程的句柄.然后进行相关操作。 
<END>     
这是从我的一个软件中提出的部分代码,是一个C++类: 
    // ProcessInfor.h: interface for the CProcessInfor class. 
    // 
    ////////////////////////////////////////////////////////////////////// 
     
    #if !defined(AFX_PROCESSINFOR_H__6AD843E3_A13E_11D5_8C79_909FCCDC071C__INCLUDED_) 
    #define AFX_PROCESSINFOR_H__6AD843E3_A13E_11D5_8C79_909FCCDC071C__INCLUDED_ 
     
    #if _MSC_VER >= 1000 
    #pragma once 
    #endif // _MSC_VER >= 1000 
     
    #define PROCESS_MAX_NUMBER 2048 
     
    class CProcessInfor : public CObject 
    { 
    public: 
     CProcessInfor(); 
     virtual ~CProcessInfor(); 
     
     int m_ProcessNumbers; //进程数目 
     
    public: 
     int GetProcessInformat(); 
     int Refresh(); 
     BOOL GetProcessAInfor(int nID , PROCESSENTRY32 *pProcessInfor); 
     
     
    }; 
     
    #endif // !defined(AFX_PROCESSINFOR_H__6AD843E3_A13E_11D5_8C79_909FCCDC071C__INCLUDED_) 
     
    // ProcessInfor.cpp: implementation of the CProcessInfor class. 
    // 
    ////////////////////////////////////////////////////////////////////// 
     
    #include "stdafx.h" 
    #include "TestTime.h" 
    #include "ProcessInfor.h" 
     
    #ifdef _DEBUG 
    #undef THIS_FILE 
    static char THIS_FILE[]=__FILE__; 
    #define new DEBUG_NEW 
    #endif 
    static PROCESSENTRY32 m_processInfor[PROCESS_MAX_NUMBER]; 
     
    ////////////////////////////////////////////////////////////////////// 
    // 
    //typedef struct tagPROCESSENTRY32 
    //{ 
    // DWORD dwSize; 
    // DWORD cntUsage; 进程引用记数 
    // DWORD th32ProcessID; 进程标识符 
    // DWORD th32DefaultHeapID; 默认堆标识符 
    // DWORD th32ModuleID; 模块标识符 
    // DWORD cntThreads; 线程引用记数 
    // DWORD th32ParentProcessID; 父进程标识符 
    // LONG pcPriClassBase; 进程创建的线程的基础优先级 
    // DWORD dwFlags; 保留 
    // char szExeFile[MAX_PATH]; 进程文件的路径 
    //} PROCESSENTRY32; 
    ////////////////////////////////////////////////////////////////////// 
    // Construction/Destruction 
    ////////////////////////////////////////////////////////////////////// 
     
    CProcessInfor::CProcessInfor() 
    { 
     int i; 
     
     for(i=0;i     { 
     memset(m_processInfor,0x00,sizeof(PROCESSENTRY32)); 
     }; 
     
     m_ProcessNumbers=0; 
     
     return; 
    } 
     
    CProcessInfor::~CProcessInfor() 
    { 
     
    } 
    ////////////////////////////////////////////////////////////////////// 
    //获取一个进程的数据 
    // 
    //参数:int nID=索引号 
    // PROCESSINFOR * pProcessInfor=存放数据的PROCESSINFOR指针 
    // 
    //返回: 
    // TRUE =成功 
    // FALSE=所需的数据不存在 
    BOOL CProcessInfor::GetProcessAInfor(int nID, PROCESSENTRY32 * pProcessInfor) 
    { 
     if(m_ProcessNumbers==0 || nID<0 || nID>PROCESS_MAX_NUMBER) 
     { 
     return FALSE; 
     }; 
     
     memcpy(pProcessInfor,&m_processInfor[nID],sizeof(PROCESSENTRY32)); 
     
     return TRUE; 
    } 
     
    ////////////////////////////////////////////////////////////////////// 
    //获取进程信息数据 
    // 
    // 
    //返回:当前进程的数目 
    // 
    int CProcessInfor::GetProcessInformat() 
    { 
     BOOL bStatu; 
     int nCount=0; 
     //int nError; 
     HANDLE hSnapshot; 
     PROCESSENTRY32 peInfor32; 
     
     hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); 
     if(hSnapshot==NULL) 
     { 
     return 0; 
     }; 
     
     nCount=0; 
     peInfor32.dwSize=sizeof(PROCESSENTRY32); 
     bStatu=Process32First(hSnapshot,&peInfor32); 
     memcpy(&m_processInfor[nCount],&peInfor32,sizeof(PROCESSENTRY32)); 
     
     while(bStatu) 
     { 
     nCount++; 
     if(nCount>PROCESS_MAX_NUMBER) 
     { 
     break; 
     }; 
     
     m_processInfor[nCount].dwSize=sizeof(PROCESSENTRY32); 
     bStatu=Process32Next(hSnapshot,&peInfor32); 
     memcpy(&m_processInfor[nCount],&peInfor32,sizeof(PROCESSENTRY32)); 
     
     /* 
     if(!bStatu) 
     { 
     nError=GetLastError(); 
     break; 
     }; 
     */ 
     }; 
     
     m_ProcessNumbers=nCount; 
     
     return nCount; 
    } 
    ////////////////////////////////////////////////////////////////////// 
    // 
    int CProcessInfor::Refresh() 
    { 
     int i; 
     
     for(i=0;i     { 
     memset(m_processInfor,0x00,sizeof(PROCESSENTRY32)); 
     }; 
     
     m_ProcessNumbers=0; 
     
     return GetProcessInformat(); 
    } 
<END>

    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -