快速业务通道

钩子的应用:程序运行监视

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
.Second);
   if(!GetWindowText(hWnd, szWinCaption, 256))
   *szWinCaption = 0;
   if(!GetClassName(hWnd,szWinClass,256))
   *szWinClass = 0;
   s += "\"" + AnsiString(szWinClass) + "\" -> \"" + AnsiString(szWinCaption) + "\"";
   if(!ValidAppCheck(hWnd, szWinClass,szWinCaption))
   s += " (关闭禁用程序)";
   s += "\r\n";
   TBinFileFuncs::WriteLogFileInfo(TRelPath().Extension("sys").c_str(), s.c_str()); //与 .exe 同名的 .sys 文件
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::WriteStartupMessage(void)
{
   AnsiString s;
   DateTimeX x = StartupTime;
   TSysInfo si;
   s += "========== Copyright (C) Victor Chen ===== Email: victor@cppfans.com ==========\r\n";
   s += AnsiString().sprintf("%04d-%02d-%02d %02d:%02d:%02d - ", x.Year, x.Month, x.Day, x.Hour, x.Minute, x.Second);
   s += AnsiString().sprintf("[System Startup - %s %d.%02d.%04d]", si.OS->OSName, si.OS->MajorVer, si.OS->MinorVer, si.OS->BuildNum);
   s += "\r\n";
   TBinFileFuncs::WriteLogFileInfo(TRelPath().Extension("sys").c_str(), s.c_str()); //与 .exe 同名的 .sys 文件
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::WriteShutdownMessage(void)
{
   AnsiString s;
   DateTimeX x;
   TimeX t; t.S000 = (x - StartupTime) % (24*60*60);
   int d = (x - StartupTime) / (24*60*60);
   s += AnsiString().sprintf("%04d-%02d-%02d %02d:%02d:%02d - ", x.Year, x.Month, x.Day, x.Hour, x.Minute, x.Second);
   s += AnsiString().sprintf("[System Shutdown - %d days, %d hrs, %d mins, %d secs]", d, t.Hour, t.Minute, t.Second);
   s += "\r\n";
   TBinFileFuncs::WriteLogFileInfo(TRelPath().Extension("sys").c_str(), s.c_str()); //与 .exe 同名的 .sys 文件
}
//---------------------------------------------------------------------------
bool __fastcall TFormMain::ValidAppCheck(HWND hwnd, char *cls, char *cap)
{
   TBinFile f;
   f.FileName = TRelPath().Extension("cfg"); //与 .exe 同名的 .cfg 文件
   f.OpenMode = TBinFile::omRead; //准备读文件
   if(f.Exists) //如果文件存在
   {
     try
     {
       f.Active = true; //打开文件
       char aLine[2048];
       while(fgets(aLine,2000,f)) //读一行文本 (标准 C 函数)
       {
         if(strnicmp(aLine,"CLASS=",6)==0) //用类名识别
         {
           TBinFileFuncs::DeleteSpaces(aLine+6,1,1); //去除空格
           if(stricmp(aLine+6,cls)==0)
           {
             PostMessage(hwnd, WM_CLOSE, 0, 0); //关闭程序
             return false;
           }
         }
         else if(strnicmp(aLine,"CAPTION=",8)==0) //用标题识别
         {
           TBinFileFuncs::DeleteSpaces(aLine+8,1,1); //去除空格
  

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号