来源于偶然的一个思路,分享下!
QQ2009版本的界面,和以前的版本有个显著的不同,就是无法通过Spy++抓到界面上某些元素的句柄了,对于这个技术的实现方案,相信好多人都有一些揣度,实现方法怎样,有人说是应用的DirectUI技术,也有人说是用反Hook,等等一些列的说道!在这,我也说说我的一点看法!我说的一种方法不属于以上的任何一种方法。至于如何,且听我慢慢道来!此思路,来源于一个偶然,在聊天窗口失去焦点与获得焦点时的一个偶然........详细信息
QQ2009版本的界面,和以前的版本有个显著的不同,就是无法通过Spy++抓到界面上某些元素的句柄了,对于这个技术的实现方案,相信好多人都有一些揣度,实现方法怎样,有人说是应用的DirectUI技术,也有人说是用反Hook,等等一些列的说道!在这,我也说说我的一点看法!我说的一种方法不属于以上的任何一种方法。至于如何,且听我慢慢道来!此思路,来源于一个偶然,在聊天窗口失去焦点与获得焦点时的一个偶然........详细信息
比如QQ,消息在聊天框内显示出来还是用的API,HOOK API就可以获得消息
http://www.xp510.com/soft/8/163/14874.html
现在的CSDN,怎么搞的,总是内容太短?
看了楼主的代码,楼主的代码在输入的时候EDIT还是会出现,用老妖的 SPY4的快捷键还是可以抓到,QQ我无法测试,我的QQ2009是可以取到句柄的
另外发现一小问题,在焦点在EDT上时再切换到其他焦点时,再切换回去,刷新有问题
不过创意不错
鄙视光看不提意见的
比如百度的博客,不让保存网页什么的.
一个身高两米的巨人,让人觉得他是侏儒,只是一个原因:委琐.最搞笑的是,这些小伎俩,对付的偏偏是那些不在乎的外行,LOOKLOOK楼主,照样可以搞定.
大公司的脑袋可能内存大使用率低,只好灌水充数.要不,就自己找扇门使劲地夹,日日夹,月月夹,年年夹,就成了现在的这样了...
不知道说的是哪个元素?还是我的QQ版本不对?
此句是该方案实现的关键。我自己研究一下吧,不敢耽误楼主时间。
procedure TDxEdit.HookedtWndProc(var msg: TMessage);
begin
OldEdtwndproc(msg);
case msg.Msg of
WM_KILLFOCUS:
begin
CopyControlBitmap(edt, bmp);
edtbndrect.Left := 2;
edtbndrect.Top := (Height - edt.Height) div 2;
edtbndrect.Right := edtbndrect.Left + edt.Width;
edtbndrect.Bottom := edtbndrect.Top + edt.Height;
edt.Visible := False;
end;
end;
end;