`
lovnet
  • 浏览: 6704292 次
  • 性别: 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.

分享到:
评论

相关推荐

    prosemirror:ProseMirror所见即所得编辑器

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

    可慧内容管理系统

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

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

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

    AutoRunner 1.5

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

    AutoRunner软件测试工具

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

    Bugtags限幅器「Bugtags Clipper」-crx插件

    SDK 会自动截屏,并与设备信息、控制台日志、操作步骤等数据实时同步到 Bugtags 云端,团队成员都可在云端高效的跟踪及解决 Bug。 Bugtags 强大的特性: 1、宿主应用里所见即所得的提交 Bug,体验流畅,方便快捷; ...

    PSMoveService:与psmove通信并存储姿势和按钮数据的后台服务

    可视客户端前端用于控制器/跟踪器配置。 是您可能对项目有任何特定疑问的良好起点。PSMoveSteamVRBridge客户端如果要在使用PSMove控制器,请查看 github页面。 现有的Steamvr支持已移至该项目中。预建版本您可以从...

    LuoBen.Net独立网店专家 v1.1.rar

    • 提供所见即所得的HTML编辑器,允许插入图片、FLASH、视频 • 在前台查看商品多图页面加入了显示商品多图说明的功能 • 购物车页面让客户可以直接输入货号添加商品的功能,利于批发用户大量进货。 • ...

    java开源包8

    Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    微生物实验室实习报告.pdf

    他要求跟踪从标本被送到微⽣物科开始⼀直到得出最终的报告 为⽌并把从中的所见所得记录下来,通过这样⼀个过 程让我们能够对微⽣物科有尽可能多的了解。除此之外,韩⽼师还让我们了解⼀下⾥⾯的⼀些⼤型⾃动化仪器的...

    phpMyFAQ:phpMyFAQ-适用于PHP和MySQL,PostgreSQL和其他数据库的开源FAQ Web应用程序

    phpMyFAQ还提供了带有所见即所得编辑器和图像管理器的多语言内容管理系统,Elasticsearch的实时搜索支持,对类别和记录具有基于用户和组的权限的灵活的多用户支持,类似Wiki的修订功能,新闻系统,用户跟踪,支持40...

    微生物实验室实习报告.docx

    他要求跟踪从标本被送到微生物科开始一直到得出最终的报告 为止并把从中的所见所得记录下来,通过这样一个过程让我们能够对微生物科有尽可能多的了解。除此之外,韩老师还让我们了解一下里面的一些大型自动化仪器的...

    笛佛手机维修通2.21(单机版)免狗破解版

    内置所见即所得的壮大的报表编辑器,一改治理软件报表格局无奈编辑、 自由度不够的弊病来电号码监督,通过来电号码鉴别老客户,调出历史业务短信息在线发送,毋庸投入额外成本搭建短信息平台自定义业务面板,自定义...

    笛佛手机维修通单机版2017免狗破解版

    特色性能 内置所见即所得的壮大的报表编辑器,一改治理软件报表格局无奈编辑、 自由度不够的弊病来电号码监督,通过来电号码鉴别老客户,调出历史业务短信息在线发送,毋庸投入额外成本搭建短信息平台自定义业务面板...

    Perl Web Objects ADE-开源

    将可重用的,上下文可重写的html / perl块文件编译为直接的perl CGI。 在所见即所得的html编辑器(例如Frontpage或Dreamweaver)中进行编辑以进行艺术修饰后,项目文件可以幸免。 跟踪会话数据。 MySQL集成可选。

    Django-Invoice-Generator:使用Django的最小发票生成器

    所见即所得 在职的 如何使用 下载压缩文件 提取内容 通过执行以下命令来安装所有依赖项: $pip install -r inventory_management/requirements.txt 要运行该应用程序,只需执行以下命令: $python3 manage.py ...

    dBlog - blog CMS and weblog open source-开源

    Weblog,photoblog和CMS平台(无技术技能):快速设置,所见即所得的编辑器,注释,通知,跟踪,日历,图表,民意调查,模板编辑,播客,上传管理器,自动调整大小,完全可本地化。 超过15.000下载!

    Django Task Manager (DJTask)-开源

    DJTask是面向小型企业的简单任务和付款管理器。 它是针对Django框架以python编写的。 它使用FCKeditor来实现所见即所得HTML任务描述。 DJTask提供工资单并跟踪已付款或未付款的任务。

    java开源包1

    Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

    java开源包11

    Spring4GWT ...JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq...

Global site tag (gtag.js) - Google Analytics