zoukankan      html  css  js  c++  java
  • 检查本功能是否在Excel中运行

     1 BOOL g_bParentIsNotEXCEL_EXE = FALSE;
     2 BOOL isNotEXCEL_EXE( DWORD dwProcessID )
     3 {
     4   HANDLE hProcessSnap;
     5   PROCESSENTRY32 pe32;
     6 
     7   // Take a snapshot of all processes in the system.
     8   hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
     9   if( hProcessSnap == INVALID_HANDLE_VALUE )
    10   {
    11     return( FALSE );
    12   }
    13 
    14   // Set the size of the structure before using it.
    15   pe32.dwSize = sizeof( PROCESSENTRY32 );
    16 
    17   // Retrieve information about the first process, and exit if unsuccessful
    18   if( !Process32First( hProcessSnap, &pe32 ) )
    19   {    
    20     CloseHandle( hProcessSnap );    // Must clean up the  snapshot object!
    21     return( FALSE );
    22   }
    23 
    24   // Now walk the snapshot of processes, and display information about each process in turn
    25   do
    26   {
    27 
    28     if( pe32.th32ProcessID == dwProcessID )
    29     {
    30         CString strExeFile = pe32.szExeFile;    
    31         //AfxMessageBox( strExeFile);
    32         strExeFile.MakeUpper();
    33         if( strExeFile != _T("EXCEL.EXE") && strExeFile != _T("MATLAB.EXE"))
    34         {
    35             CloseHandle( hProcessSnap );    // Must clean up the  snapshot object!
    36             return TRUE;            
    37         }
    38         break;
    39     }    
    40   } while( Process32Next( hProcessSnap, &pe32 ) );
    41   CloseHandle( hProcessSnap );    // Must clean up the  snapshot object!
    42   return FALSE;
    43 }
     1     HMODULE hModule = LoadLibrary(L"NTdll.dll");
     2     if (hModule)
     3     {        
     4         NTSTATUS (__stdcall *NtQueryInformationProcess) (
     5                 IN HANDLE ProcessHandle,
     6                 IN PROCESSINFOCLASS ProcessInformationClass,
     7                 OUT PVOID ProcessInformation,
     8                 IN ULONG ProcessInformationLength,
     9                 OUT PULONG ReturnLength OPTIONAL
    10         );
    11           
    12         (FARPROC &)NtQueryInformationProcess = GetProcAddress(hModule, "NtQueryInformationProcess");
    13         if (NtQueryInformationProcess)
    14         {
    15             DWORD dwProcessID = GetCurrentProcessId();         
    16                 
    17             HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwProcessID);
    18             if( NULL != hProcess )    
    19             {
    20                 LONG status;
    21                 PROCESS_BASIC_INFORMATION pbi;
    22                 status = NtQueryInformationProcess( hProcess,ProcessBasicInformation,(PVOID)&pbi,sizeof(PROCESS_BASIC_INFORMATION),NULL );
    23                 if (!status)
    24                 {                
    25                     g_bParentIsNotEXCEL_EXE = isNotEXCEL_EXE( ( DWORD )pbi.Reserved3 );
    26                 }
    27             }            
    28         }
    29     }
  • 相关阅读:
    【转】ios输入框被键盘挡住的解决办法
    【转】操作系统Unix、Windows、Mac OS、Linux的故事
    mac 下删除非空文件夹
    解决Win7 64bit + VS2013 使用opencv时出现提“应用程序无法正常启动(0xc000007b)”错误
    图的邻接表表示
    图的邻接矩阵表示
    并查集
    05-树9 Huffman Codes及基本操作
    05-树7 堆中的路径
    堆的操作集
  • 原文地址:https://www.cnblogs.com/spriteflk/p/4709996.html
Copyright © 2011-2022 走看看