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, );
  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. }

检查本功能是否在Excel中运行的更多相关文章

  1. 使用Sharepoint定时运行Excel中宏程序

    需求:因为Excel中数据量很大,其中包含了几个宏程序从其他数据源读取数据,运行一次宏需要比较长的时间,为了不影响使用,要求每天半夜运行一次Excel中的宏(无参数),Excel存放在共盘上. 解决方 ...

  2. 在Excel中使用频率最高的函数的功能和使用方法

    在Excel中使用频率最高的函数的功能和使用方法,按字母排序: 1.ABS函数 函数名称:ABS 主要功能:求出相应数字的绝对值. 使用格式:ABS(number) 参数说明:number代表需要求绝 ...

  3. 开发宏功能:excel中从sheet批量插入

    源数据如图: 宏操作: 生成数据后: 关键操作:在excel中启用开发工具,添加宏,然后添加模块即可,编辑完代码后,自定义功能按钮即可. Sub MakeDataSource() Dim isExis ...

  4. pandas实现excel中的数据透视表和Vlookup函数功能

    在孩子王实习中做的一个小工作,方便整理数据. 目前这几行代码是实现了一个数据透视表和匹配的功能,但是将做好的结果写入了不同的excel中, 如何实现将结果连续保存到同一个Excel的同一个工作表中?还 ...

  5. Appium 从 0 到 1 搭建移动 App 功能自动化测试平台 (1):模拟器中运行 iOS 应用

    转载:https://testerhome.com/topics/4960 在上一篇文章中,我对本系列教程的项目背景进行了介绍,并对自动化测试平台的建设进行了规划. 在本文中,我将在已准备就绪的iOS ...

  6. excel中如何筛选功能的使用

    excel中如何筛选功能的使用 excel是一款数据处理工具,可以在众多的数据中找到想要的经过处理之后的数据,而最直接方便的功能就是筛选.请阅读下文,了解如何对数据进行筛选. 如下图所示的学生成绩中, ...

  7. MOOC(8)- 在excel中定义用例是否运行

    除了在配置文件中定义运行哪几条用例,还可以直接在excel中定义好是否运行用例,这样比起配置文件更加直观 在运行用例的时候判断一下是否运行这个字段即可

  8. Excel中的常用功能

    Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理.统计分析和辅助决策操作,广泛地应用于管理.统计财经.金融等众多领域. Excel删除公式保留数据 1.简单举例一个简单的公 ...

  9. Excel中功能清单转Project任务

    接:http://www.cnblogs.com/vipsoft/p/8495220.html 1.在E列输入公式: =IF(LEN(A2)>1,1,IF(LEN(B2)>1,2,IF(L ...

随机推荐

  1. 《实战Java高并发程序设计》pdf

    花了我五元大洋,需要的拿去吧.百度云盘:https://pan.baidu.com/s/1o8bESY2

  2. 第3章 Java语言基础----成员变量与局部变量

    在对局部变量进行赋值时,不能对非静态字段age进行静态引用,图1错误,加上static后图二正确,图3与图4类似,如下图所示: 图1图2 图3图4 2.成员变量times在类中定义,局部变量times ...

  3. 其它网页可以上网,IE浏览器打不开网页的解决办法

    下面是自己引用别人的,作为自己的备注 昨天由于安装了多款软件,今天开机发现IE浏览器打不开了,废了些周折终于,修复了IE浏览器,现将ie浏览器打不开网页的经验分享给大家,希望此经验对于出现过此类情况的 ...

  4. centos6.5中gitlab的搭建

    使用gitlab官网给的源码进行安装,步骤如下: Install a GitLab CE Omnibus package on CentOS 6 (and RedHat/Oracle/Scientif ...

  5. windows的DOS窗口如何修改大小

    关于这个问题,其实很简单.不知道为什么网上的资料乱遭的.故自己写下来,方便有不明白的童鞋参考. 左键点击左上角的区域会弹出一个菜单,选择属性. 如下图就能轻松的修改窗口的大小了.

  6. c++11 对象池的实现

    ; template <typename T> class ObjectPool { template <typename... Args> using Constructor ...

  7. 直接用postman测试api ,服务器端没提供跨域也可以访问。

    1. 直接用postman测试api ,服务器端没提供跨域也可以访问. 但是,如果用本地的 sever 搭的server, 然后去访问api的话,浏览器会提示 跨域错误.

  8. 12C cdb/pdb 配置监听

    . PDB is not an instance, so using SID in the connection string will not work. When the database is ...

  9. 1.1 python 安装(Windows)

    1.浏览器输入URL http://www.python.org/download/ https://www.python.org/downloads/release/python-2712/ Win ...

  10. Servlet与jsp间的传值问题

    Servlet与JSP 之间的传值有两种情况:JSP -> Servlet, Servlet -> JSP.通过对象 request和 session (不考虑 application)完 ...