监控进程程序

    技术2022-05-20  78

    监控进程程序_能重新启动程序   作者:    hnynes 主页:    hnynes.51.com E_Mail: hnynes1015@163.com MSN:    hnynes@gmail.com   昨天在网上找监控程序,找了半天都没见到什么比较好的,有的呢,都只讲原理,没有给出一个可以直接运行的代码,没办法,参考了MSDN后写了下面的这个.这个并没有做文件的查找,因此,如果要对特定的文件作监控,修改路径与应用程序名.愿与大家共享,希望中国的明天有更多后继者.   原理都有很多人都讲过了,这里我就不再重复了,比较忙,没什么空写注释,请大家见谅.   适用平台:win NT以上 语言:   C++   // testMonitor.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <cstdlib> #include <windows.h> #include <stdio.h> #include <tchar.h> #include <psapi.h> #include <shellapi.h> #pragma comment(lib, "psapi.lib") void PrintProcessNameAndID( DWORD processID ) {     TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");     // Get a handle to the process.     HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |         PROCESS_VM_READ,         FALSE, processID );     // Get the process name.     if (NULL != hProcess )     {         HMODULE hMod;         DWORD cbNeeded;         if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),             &cbNeeded) )         {             GetModuleBaseName( hProcess, hMod, szProcessName,                 sizeof(szProcessName)/sizeof(TCHAR) );         }     }     // Print the process name and identifier.     _tprintf( TEXT("%s  (PID: %u)/n"), szProcessName, processID );     CloseHandle( hProcess ); } void ReStartExe(DWORD processID) {     TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");     // Get a handle to the process.     HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |         PROCESS_VM_READ,         FALSE, processID );     // Get the process name.     if (NULL != hProcess )     {         HMODULE hMod;         DWORD cbNeeded;         if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),             &cbNeeded) )         {             GetModuleBaseName( hProcess, hMod, szProcessName,                 sizeof(szProcessName)/sizeof(TCHAR) );         }     }     // Print the process name and identifier.     _tprintf( TEXT("%s  (PID: %u)/n"), szProcessName, processID );     CloseHandle( hProcess ); } int _tmain(int argc, _TCHAR* argv[]) {     DWORD aProcesses[1024], cbNeeded, cProcesses;     unsigned int i;         while (true)     {         if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )             return 0;         // Calculate how many process identifiers were returned.         cProcesses = cbNeeded / sizeof(DWORD);         // Print the name and process identifier for each process.         TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");         TCHAR szFilePath[MAX_PATH] = TEXT("<unknown>");         TCHAR szFilePath2[MAX_PATH] = TEXT("<unknown>");         for ( i = 0; i < cProcesses; i++ )         {             DWORD processID = aProcesses[i];                         // Get a handle to the process.             HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |                 PROCESS_VM_READ,                 FALSE, processID );             // Get the process name.             if (NULL != hProcess )             {                 HMODULE hMod;                 DWORD cbNeeded;                 if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),                     &cbNeeded) )                 {                     GetModuleBaseName( hProcess, hMod, szProcessName,                         sizeof(szProcessName)/sizeof(TCHAR) );                     GetModuleFileName(hMod, szFilePath,                         sizeof(szFilePath)/sizeof(TCHAR));                 }             }             // Print the process name and identifier.             //_tprintf( TEXT("%s  (PID: %u)/n"), szProcessName, processID );             if (_tcscmp(szProcessName, TEXT("TTPlayer.exe")) == 0)             {                 Sleep(10000);                 break;             }             CloseHandle( hProcess );         }         _stprintf(szFilePath, TEXT("D://Program Files//TTPlayer//TTPlayer.exe"));         if (i == cProcesses)             //CreateProcess(szFilePath, NULL, NULL, NULL, FALSE, 0, NULL,             //TEXT("D://Program Files//TTPlayer"), NULL, NULL);             ShellExecute(NULL,TEXT("open"),szFilePath,NULL,NULL,SW_SHOW);           }     //system("PAUSE");  return 0; }   稍后再发一个在整个硬盘上查找文件的程序. 大家共同学习.


    最新回复(0)