C++ Builder 高手进阶 (七)如何设计系统环境监控程序

原创 2003年02月08日 11:58:00
 

C++ Builder 高手进阶

nxyc_twz@63.com

(七)如何设计系统环境监控程序

    你想实时掌握系统资源吗?比如,当前窗口、磁盘及内存使用情况、设备及环境变量设置情况、正在运行的程序及开机启动程序等。通过我的系列介绍,相信你一定可以深入地了解这些信息,并可随意地通过编程来控制它。

一、如何获取当前窗口

这里需要一个API函数:EnumWindows。

    函数功能:该函数枚举所有屏幕上的顶层窗口,办法是先将句柄传给每一个窗口,然后再传送给应用程序定义的回调函数。EnumThreadWindows函数继续到所有顶层窗口枚举完为止或回调函数返回FALSE为止函数原型:BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);

    参数:

    lpEnumFunc:指向一个应用程序定义的回调函数指针,请参看EnumWindowsProc。

    lPararm:指定一个传递给回调函数的应用程序定义值。

    返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。

    备注:EnumWindows函数不列举子窗口。

    在循环体中调用这个函数比调用GetWindow函数更可靠。调用GetWindow函数中执行这个任务的应用程序可能会陷入死循环或指向一个已被销毁的窗口的句柄。

我编写的回调函数:bool __stdcall EnumProc(HWND hWnd,long lp);//详细定义如下:

bool __stdcall EnumProc(HWND hWnd,long lp)

{

     if(hWnd==NULL) return false;//如果指定的窗口句柄为空,则退出
     char title[60];    //保存窗口标题
     char hwndStr[10];  //保存窗口句柄 
     char className[60];//保存类名
     TListItem *mItem;//用来存储窗口信息:窗口标题、句柄及类名
     GetWindowText(hWnd,title,60);//取得指定窗口句柄的窗口标题
     if (AnsiString(title)!= "" && AnsiString(title)!= "Default IME")

     {//如果窗口标题不为空且不是输入法标题,则
         mItem=MainForm->ListView1->Items->Add();//添加该窗口信息到列表中
         sprintf(hwndStr,"%08x",hWnd);//将窗口句柄转化为16进制
         mItem->Caption=AnsiString(title);
         mItem->SubItems->Add(AnsiString(hwndStr));//添加窗口句柄
         GetClassName(hWnd,className,60);//取得类名
         mItem->SubItems->Add(AnsiString(className));//添加类名
      }
   return true;

 }   

获取当前窗口:EnumWindows((WNDENUMPROC)EnumProc,0);

《未完待续》

 

Android开发高手进阶--学习任务

通过实践和摸索,整理了安卓学习和提升的进阶任务,分设4关。 一、实践关: fragement的学习和应用新组件viewpage等学习自定义view 的实现与应用listview下拉刷新属性动画的...
  • wellsoho
  • wellsoho
  • 2016年04月05日 12:05
  • 1631

JVM 菜鸟进阶高手之路三

笨神大大分享: 在微信小程序里面搜索:JVMPocket,这个小程序是笨神大大提供的,里面可以搜索相关JVM参数,用法。 -XX:MaxTenuringThreshold,这个参数主要是设置YGC的时...
  • lirenzuo
  • lirenzuo
  • 2017年07月22日 10:09
  • 1559

高手进阶,终极内存技术指南——完整/进阶版 I(转)

高手进阶,终极内存技术指南——完整/进阶版 I 老實話,我個人覺得這兩篇文章真的寫的很不錯,前段時間在study關於DDR內存的初始化以及其相關知識的時候,詳細學習了它。個人很佩服原文的作者能夠寫出這...
  • lightseed
  • lightseed
  • 2009年10月03日 13:53
  • 10451

C++高级编程(成为C++高手的必由之路)

我们已经知道C++中的标准输入输出流,cout和cin现在我们来学习文件读取流和向文件写入流。这就需要用到 C++ 中另一个标准库 fstream,它定义了三个新的数据类型: 数据类型 描述...
  • songkai320
  • songkai320
  • 2016年07月15日 15:13
  • 7014

今天看到C#高手进阶流程

了解一种界面编程:WPF,WINFORM,ASP.NET.  熟悉一种UI架构模式, MVP,MVC,MVVM.  了解如何使用WCF, 异构平台编程下使用WCF需要你对WCF有非常深入的了解。 ...
  • wuwo333
  • wuwo333
  • 2011年09月09日 09:59
  • 1341

深圳山寨手机遇寒冬:最低端小厂减至20家

http://tech.163.com/12/0111/02/7NF1GHDF000915BE.html 深圳山寨手机遇寒冬:最低端小厂减至20家 2012-01-11 02:12...
  • love_hot_girl
  • love_hot_girl
  • 2012年01月11日 15:39
  • 3353

教你怎样成为C++高手

1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》(C++编程思想,翻译的非常差); 3.看《The C++ Program...
  • hellokandy
  • hellokandy
  • 2016年10月24日 11:07
  • 581

Android高手进阶教程

Android高手进阶教程  Android高手进阶教程(一)之----Android常用名令集锦(图文并茂) Android高手进阶教程(二)之----Android Launcher抽屉类...
  • gdliweibing
  • gdliweibing
  • 2015年01月13日 09:39
  • 731

帝国时代2的打法

要成为顶级高手,先决条件是技术,最重要的是意识,其次是运气。现今AOC的各种打法和招数很多人都知道而且能打得出来,打得好的就叫高手,能灵活运用和适当结合的就叫超高手,超高手的水平再加上强的意识就是顶级...
  • gongfusz
  • gongfusz
  • 2015年04月10日 13:56
  • 326

JVM菜鸟进阶高手之路五

参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察2小时发现 ...
  • lirenzuo
  • lirenzuo
  • 2017年07月28日 15:04
  • 1285
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ Builder 高手进阶 (七)如何设计系统环境监控程序
举报原因:
原因补充:

(最多只允许输入30个字)