钩子的应用:程序运行监视
作者 佚名技术
来源 程序设计
浏览
发布时间 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 用键盘全局钩子Hook监视多进程键盘操作下一篇: Windows的动态链接库原理及使用2
关于钩子的应用:程序运行监视的所有评论