快速业务通道

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

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
ong(Application->Handle, GWL_EXSTYLE)|WS_EX_TOOLWINDOW);
     Application->Run();
   }
   catch (Exception &exception)
   {
     Application->ShowException(&exception);
   }
   catch (...)
   {
     try
     {
       throw Exception("");
     }
     catch (Exception &exception)
     {
       Application->ShowException(&exception);
     }
   }
   return 0;
}
--------------------------------------------------------------------------------
主窗口程序:
TSharedMemory AppMem(MYAPPMARK, 4096); //定义共享的内存,这个内存是真正存在的
__fastcall TFormMain::TFormMain(TComponent* Owner)
: TForm(Owner)
{
   AppMem.AppInfo->hMainWnd = Application->Handle;
   AppMem.AppInfo->hMainForm = Handle;
   WriteStartupMessage(); //在记录文件里加入启动信息
   PostMessage(Handle, WM_USERCMD, UC_INITWIN, 0);
   MyHook = new THookedProcs;
   MyHook->InitFuncs(); //安装钩子
}
//---------------------------------------------------------------------------
__fastcall TFormMain::~TFormMain()
{
   MyHook->UninitFuncs(); //删除钩子
   delete MyHook;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormCloseQuery(TObject *Sender, bool &CanClose)
{
   WriteShutdownMessage(); //在记录文件里加入退出信息
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::WndProc(Messages::TMessage &Message)
{
   if(Message.Msg == WM_USERCMD)
   {
     if(Message.WParam == UC_SHOWWIN)
     {
       Show();
       AppMem.ActiveAppWnd();
     }
     else if(Message.WParam == UC_INITWIN)
     {
       Hide();
       Left = (Screen->Width - Width) / 2;
       Top = (Screen->Height - Height) / 2;
     }
     else if(Message.WParam == UC_WINHOOK)
     {
       WinHookMessage(Message.LParam);
     }
   }
   TForm::WndProc(Message);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BnExitClick(TObject *Sender)
{
   Close();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::BnHideClick(TObject *Sender)
{
   Hide();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::CreateParams(Controls::TCreateParams &Params)
{
   TForm::CreateParams(Params);
   Params.Style = WS_OVERLAPPED|WS_DLGFRAME|WS_CAPTION|WS_SYSMENU;
   Params.ExStyle |= WS_EX_TOPMOST;
   Params.X = Screen->Width - 8;
   Params.Y = Screen->Height - 8;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::WinHookMessage(long Param)
{
   HWND hWnd = (HWND) Param;
   char szWinCaption[256];
   char szWinClass[256];
   AnsiString s;
   DateTimeX x;
   s += AnsiString().sprintf("%04d-%02d-%02d %02d:%02d:%02d ", x.Year, x.Month, x.Day, x.Hour, x.Minute, x

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号