转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
绑架窗体之Delphi版         ★★★★

绑架窗体之Delphi版

作者:闵涛 文章来源:闵涛的学习笔记 点击数:838 更新时间:2009/4/23 18:35:36

“绑架窗体”:顾名思义,就是将其它应用程序甚至系统程序的窗体活生生地拖进本程序的窗体内。这种未征得其它程序同意的强行“绑架”行为在某些场合下却能发挥出非常独特的作用。本文将讨论“绑架”窗体的技术及应用,并给出了一个完整的“强盗”程序的例子。
从技术上讲,为了实现“绑架”,“强盗”程序中必须要有一个 MDIForm对象。


实现“绑架”的第二个条件,是必须知道被“绑架”窗体的句柄。做到这一点并不难。比如,当鼠标在屏幕上滑动时,我们可以用 API函数GetCursorPos来获得鼠标指针的当前位置坐标,然后用另一个 API函数 WindowFromPoint来获得指定点窗口的句柄。或者使用FindWindow获得窗口句柄。
有了上述两个条件,“强盗”程序就可以开始实施“绑架”了:首先用 API函数GetWindow 的GW_CHILD命令来寻找本程序第一个子窗口的句柄;然后用另一个 API函数 SetParent为被“绑架”窗体指定一个“新父”,即指向上面的子窗口的句柄。立刻,两个原本毫无关系的窗体具有了“父子”关系:被“绑架”窗口出现在“强盗”窗体内部!
二、“绑架”的安全性
不分青红皂白地进行“绑架”是非常危险的。但只要遵守以下两个原则就可以保证安全性:
第一,在关闭“强盗”程序之前,把被“绑架”窗体用 SetParent函数“释放”掉,即恢复被“绑架”者的原来的“父亲”。
第二,不要“绑架”系统窗口。系统窗口一般有:任务栏窗口、按下“开始”产生的窗口、按下“Ctrl+Alt+Del”产生的窗口,点击鼠标右键产生的窗口,等等。
绑架”技术在VB中有广泛的应用,例如,可在程序运行中将控件置入容器控件内部(比如将一个按钮设成图象或窗体控件的子窗口),或者将控件从一个容器移至窗体中的另一个。


代码:
在窗体的private中定义  
hwndOldParent:HWND;
    hwndNotePad:HWND;

将窗口的FormStyle设为fsMDIForm

procedure TForm1.Button1Click(Sender: TObject);
begin
hwndNotePad:=FindWindow(PChar(''''Notepad''''),0);
hwndOldParent:=GetParent(hwndNotePad);
Windows.SetParent(hwndNotePad,handle);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Windows.SetParent(hwndNotePad,hwndOldParent);
end;

更多请见:http://lincosoft.go.nease.net/

 


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台