`
lovnet
  • 浏览: 6881525 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

所见及所得的类分析跟踪器

阅读更多

{以下代码可以分析Windows下的鼠标处的对象类名,句柄及其递归父类等信息,是很久以前火鸟的工具软件视窗超人中的一段代码。其触发使用了Timer控件,其实更好的实现是用Windows Mouse Hook来做触发,就当抛砖引玉吧;此代码还实现了不依赖于Windows2000以上要求的半透明窗口(在Win98/WinMe下也可半透明),本实现的实现其实比较类似于金山词霸的即指即译功能,只不过大家在做不同的应用而已。在Delphi环境下,新建一个窗体,把代码贴入即可,本工具主要会对做Windows环境下的开发人员工作有些帮助(如分析别人的程序的控件对象,跟踪对象句柄等)}
unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Timer1: TTimer;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var poss:TPoint;
ic:Hdc;
Bmp:TbitMap;
Hands: HWND;
Buf: array[0..129] of Char;
Stmp:TStrings;
itmp,iwidth,iheight:integer;
sword,sline:string;
begin
GetCursorPos(Poss);
with self do
begin
if (poss.x <> tag-10) or (poss.y<>timer1.Tag-10) then left:=screen.Width
else
begin
Hands := WindowFromPoint(Poss);
if (left=tag) or (hands=handle) then exit;
stmp:=TStringList.create;
stmp.Add('句柄: '+IntToStr(Hands));
GetClassName(Hands, Buf, 128);
stmp.Add ('类名: '+Buf);
itmp:=GetParent(Hands);
while itmp>0 do
begin
GetClassName(itmp, Buf, 128);
if buf<>'' then stmp.Add (inttostr(stmp.Count-1)+'级父类: '+Buf);
itmp:=GetParent(itmp);
end;
SendMessage(Hands, WM_GETTEXT, 128, Integer(@Buf));
sword:='字符: '+buf;
if length(sword)>132 then sword:=sword+'....';
repeat
itmp:=pos(chr(10),sWord);
if itmp>0 then
begin
sline:=copy(sWord,1,itmp-1);
sword:=copy(sWord,itmp+1,length(sword));
end
else sline:=sword;
itmp:=pos(chr(13),sline);
if itmp>0 then sline:=copy(sline,1,itmp-1);
stmp.Add(sline);
until sline=sword;
iwidth:=0;
for itmp:=0 to stmp.Count-1 do if canvas.TextWidth(stmp[itmp])+15>iWidth then iWidth:=canvas.TextWidth(stmp[itmp])+15;
iheight:=stmp.Count*(canvas.TextHeight(stmp[0])+2);
width:=iwidth;
height:=iheight;
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE+ SWP_NOSIZE+SWP_NOACTIVATE+SWP_NOOWNERZORDER);
ic:=CreateDC('DISPLAY',nil,nil,nil);
if tag+width>screen.Width then tag:=screen.Width-width;
if timer1.Tag +height>screen.Height then timer1.Tag:=screen.Height-height;
Bmp:=Tbitmap.Create;
bmp.Width := Width;
bmp.Height :=Height;
bitblt(bmp.Canvas.handle,0,0,Width,Height,ic,tag,timer1.Tag,SRCCOPY);
Left :=tag;
Top :=timer1.tag;
bitblt(canvas.handle,0,0,Width,Height,bmp.Canvas.handle,0,0,SRCAND);
canvas.Font.Color:=$0000FF;
SetBkMode(canvas.handle,TRANSPARENT);
for itmp:=0 to stmp.Count-1 do canvas.TextOut(5,5+itmp*canvas.TextHeight(stmp[itmp]),TrimRight(stmp[itmp]));
deletedc(ic);
bmp.free;
stmp.Free;
end;
tag:=poss.x+10;
timer1.Tag:=poss.y+10;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
self.BorderStyle:=bsNone;
Timer1:=TTimer.Create(self);
timer1.Interval:=300;
timer1.OnTimer:=Timer1Timer;
end;

end.

分享到:
评论

相关推荐

    超级简单的所见即所得编辑器

    所见即所得(WYSIWYG)编辑器是一种允许用户在浏览器中直接编辑文本,同时看到文本呈现效果的工具。这种编辑器广泛应用于内容管理系统、论坛、博客等平台,为用户提供了一个与使用桌面文字处理软件相似的在线编辑...

    开源WebGIS软件 Mapserver配置文件Mapfile所见即所得编辑器

    为了解决这个问题,出现了“Mapserver配置文件Mapfile所见即所得编辑器”——MSCompanion。 MSCompanion是一个专为MapServer设计的可视化编辑工具,旨在简化Mapfile的创建和编辑过程。通过提供所见即所得(WYSIWYG...

    prosemirror:ProseMirror所见即所得编辑器

    该存储库仅用作中央问题跟踪器,并拥有一个脚本,可帮助您轻松检出所有用于开发的核心模块。 该包含更多信息,许多和。 此代码是根据发布的。 这里有一个用于一般讨论和支持请求的,而是报告问题的地方。 如果您...

    网页web编辑器

    Web编辑器主要分为两类:所见即所得(WYSIWYG)编辑器和源代码编辑器。所见即所得编辑器类似于传统的文字处理软件,如Microsoft Word,用户可以直接看到页面布局和格式,编辑时可即时预览效果。源代码编辑器则更偏向...

    程序设计简介.pptx

    4. **资源编辑器**:资源编辑器允许开发者直观地编辑对话框、菜单、图标等资源,提供所见即所得的界面。 此外,文件还提到了两个重要的概念: - **MFC库**(Microsoft Foundation Classes):MFC是一组预先编写好...

    Enterprise Architect 详细使用教程

    EA还提供了所见即所得形式的模板编辑器和强大的报告工具,能够生成复杂的文档和报告,满足不同客户或公司需求。 对于代码管理方面,EA具备源代码的前向和反向工程能力,能够支持C++、C#、Java、Delphi、***、Visual...

    Enterprise Architect 7.0入门教程 mysql建模工具.docx

    EA还含有一个所见即所得形式的模板编辑器,提供强大的文档生成和报告工具,能够生成复杂详细的报告,报告可以按照公司或客户要求的格式提供所需信息。EA具备源代码的前向和反向工程能力,支持多种通用语言,包括C++...

    html网页编辑器免安版

    6. WYSIWYG(What You See Is What You Get)编辑:标签按钮化的编辑器通常采用WYSIWYG方式,用户所见即所得,提升了编辑体验。 7. 兼容性检查:好的编辑器还会提供浏览器兼容性检查,确保网页在不同浏览器下都能...

    可慧内容管理系统

    关键词,发布机构,文号,发布、生效、废止日期设定 所见即所得的文章编辑器 无限级分类的文件下载系统,拥有信用点下载,分类级别设定,防盗链功能,多下载地址,可以进行详细设置允许用户发表自己的软件,拥有...

    jQuery富文本编辑器Notebook

    "jQuery富文本编辑器Notebook"是一个专为创建简洁、整洁且美观的所见即所得(WYSIWYG)编辑器而设计的工具。这款编辑器利用了流行的jQuery库,旨在提供一个用户友好的界面,使得内容创作者可以轻松地进行文字编辑、...

    维修业务通V2.11网络版 家电 电脑 销售维修.zip

    [1]内置所见即所得的强大的报表编辑器,一改管理软件报表格式无法编辑、自由度不够的弊端 [2]来电号码监视,通过来电号码识别老客户,调出历史业务(来电显示说明),用户也可以根据需要配置电话录音设备 [3]短消息...

    Enterprise-Architect使用手册

    - 提供所见即所得形式的模板编辑器。 - 支持生成复杂详细的报告,符合公司或客户需求格式。 #### 六、源代码工程能力 - **双向工程能力**: - 前向工程:基于模型生成源代码。 - 反向工程:从源代码生成模型。 ...

    AutoRunner 1.5

    &lt;br&gt;VT100/VT220测试——对金融等行业广泛使用的终端系统进行功能测试,支持自动录制脚本、所见即所得的资源和脚本编辑,稳定的自动同步功能。 &lt;br&gt;产品特点: &lt;br&gt;使用JAVA语言作为脚本语言,便于学习与...

    CutePage 非常棒的网页编辑软件

    1. **所见即所得的编辑模式**: CutePage的核心功能之一是其直观的所见即所得编辑界面。这意味着用户在编辑时看到的页面布局和样式,与最终发布到互联网上的效果几乎完全一致。用户可以直接拖放元素,调整文字样式...

    中小型企业网站后台管理系统

    它通常有WYSIWYG(所见即所得)编辑器,让非技术用户也能方便地编辑页面。 3. **产品与服务管理**:对于销售产品或服务的中小企业,后台需提供商品上架、分类、库存管理等功能。管理员可以添加新产品,调整价格,...

    AutoRunner软件测试工具

    &lt;br&gt;VT100/VT220测试——对金融等行业广泛使用的终端系统进行功能测试,支持自动录制脚本、所见即所得的资源和脚本编辑,稳定的自动同步功能。 &lt;br&gt;产品特点: &lt;br&gt;使用JAVA语言作为脚本语言,便于学习与...

    ea7 入门教程.0

    - **文档生成与报告工具**:包含所见即所得形式的模板编辑器,能够生成复杂且详细的报告,并根据特定需求调整报告格式。 - **源代码工程**:支持源代码的前向工程和反向工程,适用于多种通用编程语言,如 C++、C#、...

    [其他类别]JSP网页HTML编辑器 v1.0 beat_jsphtmleditor.zip

    这些编辑器允许用户以所见即所得的方式编写和格式化HTML。 2. **JSP动作指令**:JSP中,`&lt;jsp:include&gt;`、`&lt;jsp:forward&gt;`和`&lt;jsp:useBean&gt;`等动作指令用于动态地将内容插入到页面中,或者管理对象的生命周期。在本...

Global site tag (gtag.js) - Google Analytics