首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

施用Delphi编写自动关闭Windows信使服务窗体程序

2013-02-24 
使用Delphi编写自动关闭Windows信使服务窗体程序使用Delphi编写自动关闭Windows信使服务窗体程序??? Windo

使用Delphi编写自动关闭Windows信使服务窗体程序

使用Delphi编写自动关闭Windows信使服务窗体程序

??? Windows信使服务是Windows为了方便尽心系统管理而设置的一项工具,初衷是很好的可以使得管理员方便的在局域网内发布消息给各个用户。
??? 可是却常常被一个菜的不能再菜的家伙利用,到处扰乱别人的学习和生活。每每让人在用电脑的同时突然弹出一个确认对话框。如果只是在办公的还好,尽管是最上层窗口,只要关闭了即可。可是如果是在CS,则会突然跳出CS,要求再去点击确认,让人烦躁的没办法。
??? 如下程序使用Delphi编写可以自动识别信使服务的弹出窗口并自动关闭。内部使用了Timer空间来定时识别信使服务窗体。原本还打算用线程,可是后来调试出了点问题就把这个垃圾功能去掉了。

unit untmain;

interface

uses
? Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
? Dialogs, StdCtrls, untclosew, ExtCtrls, winprocs;

type
? Tfrmmain = class(TForm)
??? Label1: TLabel;
??? edtcount: TEdit;
??? btnok: TButton;
??? Timer1: TTimer;
??? procedure btnokClick(Sender: TObject);
??? procedure Timer1Timer(Sender: TObject);
??? procedure FormCreate(Sender: TObject);
??? procedure FormDestroy(Sender: TObject);
? private
??? { Private declarations }
? public
??? closew:tclosew;
? end;

var
? frmmain: Tfrmmain;

implementation

{$R *.dfm}

procedure Tfrmmain.btnokClick(Sender: TObject);
begin
if btnok.caption='启动服务' then
? begin
??? btnok.Caption:='停止服务';
??? timer1.Enabled:=true;
? end
else
? begin
??? btnok.Caption:='启动服务';
??? timer1.Enabled:=false;
??? closew.suspend;
? end;
closew.FreeOnTerminate:=true;
end;

procedure Tfrmmain.Timer1Timer(Sender: TObject);
var
hwndwin:hwnd;
begin
hwndwin:=winprocs.FindWindow(nil,pchar('信使服务 '));
if hwndwin<>0 then
? begin
??? closew.Resume;
? end
else
? begin
??? if not(closew.Suspended) then
????? closew.suspend;
? end;
end;

procedure Tfrmmain.FormCreate(Sender: TObject);
begin
closew:=tclosew.Create(true);
end;

procedure Tfrmmain.FormDestroy(Sender: TObject);
begin
if closew<>nil then
? begin
??? closew.FreeOnTerminate:=true;
??? closew.Terminate;
? end;
end;

end.

?

unit untclosew;

interface

uses
? Classes, sysutils, windows, winprocs, messages;

type
? tclosew = class(TThread)
? private
? protected
??? procedure update;
??? procedure Execute; override;
? end;

implementation

uses untmain;

procedure tclosew.Execute;
var
hwndwin:hwnd;
begin
while not(terminated) do
begin
? hwndwin:=winprocs.FindWindow(nil,pchar('信使服务 '));
? if hwndwin<>0 then
??? begin
????? winprocs.SendMessage(hwndwin,WM_CLOSE,0,0);
????? synchronize(update);
??? end;
end;
end;

procedure tclosew.update;
var
i:integer;
begin
i:=strtoint(untmain.frmmain.edtcount.text);
i:=i+1;
untmain.frmmain.edtcount.text:=inttostr(i);
end;

end.

/////////////////////////////////////////////////

热点排行