| |
|
“黑洞2000”可以关闭天网防火墙
“黑洞”这个看似很神奇的功能,只不过是用了一个API函数PostMessage(窗口句柄,WM_Quit,0,0)而已。 在Windows系统中,每个可执行文件在运行时不仅有进程ID,还存在一个窗口名。一般来说,如果一个程序运行时在任务栏有个图标,你把鼠标移动到那里出现的提示就是该程序的窗口名。即使程序是隐藏运行,它的窗口名还是存在的,只不过你看不见而已。我们只要找到一个程序的窗口句柄,然后发送一个消息WM_Quit给它就会把它无条件关闭了。那么如何找到那个叫“句柄”的东西呢?Windows提供了一个API函数FindWindow来通过窗口名返回窗口句柄。比如说你想查找一个窗口名为“有害软件”的句柄,则可以用以下语句: Var Function My_RefreshForm(MyStringList:TStringList):Boolean; 我们来试试调用这个函数看看。运行Delphi新建一个工程,放上一个ListBox控件和一个按钮Button1,在它的OnClick事件写代码: procedure TForm1.Button1Click(Sender:TObject); 然后运行这个程序,点击Button1就会在ListBox1列出系统现在的所有窗口名。你会发现有一些很奇怪的操作系统本身运行的程序——但是你自己在Windows任务列表中却看不到它。有了上面这两个函数,我们就可以叫它Quit了。我们再来写个函数吧: Procedure My_KillForm(S:String); 我们在程序中要杀死那个“有害软件”,那么可以先用My_RefreshForm函数列出所有窗口名称,然后一个一个和“有害软件”这个窗口名作比较,如果条件符合就使用My_KillForm('有害软件')把它给关了。至于象“黑洞2001”那样做到“模糊设置”,相信大家很快就可以写出来,这里就不再多讲了 |
| Copyright By「黑白网络工作室」2002 All Rights Reserve |