我所知道的方法:
1、设置一个timer不断的FindWindow找到标题与禁止程序名单中的相同的就关闭它。(不推荐,不科学)
2、设置一个timer不断的获取系统进程列表,在列表中比较是否存在与禁止程序名单中的相同,有则关闭它。(也不科学)
3、让EXE与我编写的程序关联,所有的EXE都是通过我的程序来运行,在我的程序中判断ParamStr(1)是不是我需要禁止的程序,如果是的话给个提示,否则直接运行该程序。(有点像黑客程序,我到是实现了,问题是像查看网页源文件这些功能就没作用了:-()
4、hook WM_SHELL,捕获程序创建的消息。(这个比较好,不过实现起来比较复杂)请各位说说还有没有什么其它的好办法?最好是详细的例子让大家讨论。
我是考虑有没有API能够得到当前系统创建了一个新的进程,不需知道该进程的名称,ID等信息,只需要知道有一个进程被创建了,然后我再用FindWindow或者进程快照去找匹配的程序,这样是不是更科学些?????

解决方案 »

  1.   

    自己顶下先。
    各位,都来讨论嘛,知道不知道的都来说两句嘛,那怕是一个不成熟的想法。
    知道的更需要把你的经验、知识拿出来分享,别藏着掖着的。
    现在的人回答人的问题让我越看越生气,比如有人问如何做像网吧管理系统一样的程序,就有人回答:用HOOK、用注册表、屏蔽按钮.......说的都是费话,到底知道不知道具体怎么用怎么实现?不知道就别说,知道就说详细点,我看有的人纯粹混个脸熟!
      

  2.   

    没有做过这方面的程序!也不知道怎么实现!关注ing
      

  3.   

    用日志钩子应该可以,因为里面(PeventMsg)可以返回你须要的东西.;再用getwindowtext就可以得到标题,然后判断.如果是目标,就发送关闭消息.
    你可以试下.具体的源码很容易找的,自己搜下,我不贴啦,GetFocus();直接返回当前焦点的句柄
    GetWindowsText();以句柄得到标题.function HookProc(codehook: Integer; Wparam:Wparam; Lparam: Lparam); Lresult; stdcall;
    var t: Tevent..
    begin
      t := PeventMsg(LParam)^;
      getwindowstext(t.hwnd..);
    end;这个日志钩子不用Dll,是全局的.
    SetWindowsHookex(Wh_JournalRecord,...);
      

  4.   

    Hook CreateProcess 这个API也是个办法.