首页 相关文章 绑架窗体之Delphi版

绑架窗体之Delphi版

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

  
  实现“绑架”的第二个条件,是必须知道被“绑架”窗体的句柄。做到这一点并不难。比如,当鼠标在屏幕上滑动时,我们可以用 API函数GetCursorPos来获得鼠标指针的当前位置坐标,然后用另一个 API函数 WindowFromPoint来获得指定点窗口的句柄。或者使用FindWindow获得窗口句柄。
  有了上述两个条件,“强盗”程序就可以开始实施“绑架”了:首先用 API函数GetWindow 的GW_CHILD命令来寻找本程序第一个子窗口的句柄;然后用另一个 API函数 SetParent为被“绑架”窗体指定一个“新父”,即指向上面的子窗口的句柄。立刻,两个原本毫无关系的窗体具有了“父子”关系:被“绑架”窗口...[ 查看全文 ]

2016-02-19 标签:

绑架窗体之Delphi版的相关文章

  • 标签:Delphi
      Delphi关键字导航 网络 界面 多媒体 数据库 图像 控件 文件 硬件  在做Mis项目过程中,有时需要让用户自己来实现窗体控件的布局,比如酒店管理中就需要对餐厅餐桌位置进行布局。要实现这种功能,必须做好三件事: 1、设置进入控件边缘的光标形状; 2、改变控件的大小及位置; 3、保存窗体控件的位置及状态,窗体下次启动时重新设置它们的这些信息。具体步骤如下: 1、修改控件光标。只...[ 查看全文 ]
  • 标签:Delphi
    1.在你的程序中建立一个新窗体,将窗体的Name属性设置为frm_Splash,BorderStyle属性设置为bsNone,BorderIcons属性设置为[],这样快闪窗体显示时便没有标题栏和边界。 2.在frm_Splash上,添加一个Image控件,设置它的Align属性为alClient,指定Picture属性,载入一幅图像。 3.可以根据需要在窗体上添加别的说明信息,如:设计人、开发商等。用Label控件,一定要把Transparent属性设置为Tr...[ 查看全文 ]
  • delphi 开发的应用中,每一个窗体都有一个对应的窗体文件(.dfm),用来记录该窗体的属性以及窗体上所有控件的属性,以便在窗体关闭后能准确地重新生成窗体。几乎所有的DELPHI参考书都没有提到过该文件的具体情况,偶尔提到,也都泛泛而谈,因为窗体文件是二进制文件,只有在DELPHI提供的编辑环境中才能看到它的本来面目,对其进行操作可能会出现不可预知的错误;而且在大多数情况下,确实没有修改的必要...[ 查看全文 ]
  • 标签:Delphi
      delphi 开发的应用中,每一个窗体都有一个对应的窗体文件(.dfm),用来记录该窗体的属性以及窗体上所有控件的属性,以便在窗体关闭后能准确地重新生成窗体。几乎所有的DELPHI参考书都没有提到过该文件的具体情况,偶尔提到,也都泛泛而谈,因为窗体文件是二进制文件,只有在DELPHI提供的编辑环境中才能看到它的本来面目,对其进行操作可能会出现不可预知的错误;而且在大多数情况下,确实没有修...[ 查看全文 ]
  • import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.UIManager; class Mywindow extends JFrame { JButton button1; JButton button2; JInternalFrame interframe1,interframe2; JPanel jpanel; Mywindow() { setVisible(true); //setSize(400,400)见下面的说明! jpanel=(JPanel)this.getContentPane(); jpanel.setLayout(new GridLayout(1,2)); button1=new JButton(&...[ 查看全文 ]
  • 如何移动没有Title的窗体。 private void label1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { mouse_offset = new Point(-e.X, -e.Y); } private void label1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point mousePos = Control.MousePosition; mousePos.Offset(mouse_offset.X, mouse_offset.Y); Lo...[ 查看全文 ]
  • 标签:Web开发
    对于下载时新打开一窗口下载,下载完后需要关闭的 一种:对于较小文件可以有效: System.IO.FileInfo file = new System.IO.FileInfo("F:mp3mp3别哭我最爱的人.mp3");    Response.Clear();    Response.ClearHeaders();    Response.Buffer = false;    Response.Charset="GB2312";    Response.ContentEncoding=System...[ 查看全文 ]
  • 标签:Delphi
    一、组件的简要层次结构 一般情况下,VCL的组件可以从Tcomponent为开始。其最明显的特征就是它的属性可以在设计时通过对象察看器来操纵,另外,他还能拥有其他组件。 从Tcomponent下,分出非可视组件和可视组件。 非可视组件如TOPenDialog,TTimer,TTable等,这些组件因为继承自Tomponent,所以也就继承了在设计时可以被操纵的特性。 可视化组件始自TControl,是它引入了可视化属...[ 查看全文 ]
  • 标签:Delphi
       Delphi 编辑器   在表面上,对IDE的第7个版本来说Delphi的编辑器看来似乎没有改变许多。 然而,在幕后,它是一个全新的工具。 除了用它来处理Object Pascal 语言(或者Delphi语言,Borland   现在喜欢如此称呼它)的文件之外,你现在能使用它来处理其它用于Delphi开发(诸如SQL,XML,HTML,和XSL文件)的文件,还有其它语言(包括C ++和C# )的文件。 XML和HTML编辑在Delphi ...[ 查看全文 ]
  • 几乎所有正式一点的C++ Builder程序除了主窗体外都还有从属窗体,有时是对话框,有时是无模式窗口。VCL使得创建和显示从属窗体都易如反掌。但不是所有程序都适于采用无模式窗体,有些程序需要在一个主窗体内显示不同的内容。本文讨论如何将一个从属窗体寄居于主窗体中,从属窗体看上去是主窗体的一部分,用户甚至不知道一个从窗体正被显示。图A显示了一个主窗体,其客户区是一个从窗体。 理解子/父...[ 查看全文 ]
  • Private mouse_offset As Point Private Sub form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown mouse_offset = New Point(e.X, e.Y) End Sub Private Sub form1_MouseMove(ByVal Sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove '按住鼠标左右键均可拖动窗体 Dim frm As Form1 =...[ 查看全文 ]
  • 标签:Delphi
    这是一个可以计数的组件,为了简单,我以秒为单位,当开始时,他就从0开始增加,并显示出来,到3600时,它又回到0,如此循环。当然它也可以停止,暂停,继续。另外,他还有一个时间事件,即可以设定每隔多少时间来触发这个事件,这倒是一个好的功能,我们可以设半个小时触发事件,在事件处理函数中来一个声音,然后睡个觉,半个小时后,就由这个声音来提醒你起床了。 我们一开始不要新建组件单元...[ 查看全文 ]
  • 标签:Delphi
      前言   第一次Zack Urlocker给我看一款尚未发布的名为Delphi的产品时,我意识到她将改变我的工作—还有许多其他软件开发者的工作。 我过去为使用Windows C++ 库而挣扎,而Delphi过去是现在仍然是面向对象编程和可视化编程的最好组合,它适用于Windows操作系统和Linux操作系统,很快也将适用于.NET。   Delphi 7完全继承了这一传统并坚持了VCL的坚固基础,VCL提供了一个惊人的无所不...[ 查看全文 ]
  • 在主窗体的Form_load()中的最前面加入下列代码: DimX0Aslong DimY0AsLong '让窗体居中 X0=Screen.Width Y0=Screen.Height X0=(X0-Me.Width)/2 Y0=(Y0-Me.Height)/2 Me.MoveX0,Y0-> [ 查看全文 ]
  •   Delphi中MIDAS线程模型   (1)Single      代表所产生的In-Process COM程序是一个单一线程的程序,一次只能接收一个client发出来的request,由于是循环的操作,所以不会有多任务同时进行的问题,你的COM程序不需要编写多任      务处理的部分.   (2)Apartment      代表每一个Remote Data Module所产生的...[ 查看全文 ]
  • 椭圆窗体的实现 作者:张建明 下载本文示例源代码 代码运行效果图如下: 我将分三部分介绍这一程序的实现过程: 1. 生成椭圆形图形界面,并在上面写斜体带颜色的子和鼠标拖动功能。 2. 增加鼠标右键菜单,并实现总在前面和其他程序自动覆盖的功能。 3. 生成鼠标的全局钩子,截获鼠标事件,返回****的值。 ...[ 查看全文 ]
  • 标签:Web开发
    目前代码应该没什么bug了,兼容IE6.0 & FF 1.5, 通过xHTML 的Transitional验证和 CSS 验证。 为了能通过验证,只好再次改变使用的方式,改为用DIV实现,方法: 代码如下: div class="xWin"  span class="xWinSetting" width="200" top="270" left="140" title="我就是传说中那个超长的窗口标题"/span  content /div ...[ 查看全文 ]
  • 标签:Web开发
    代码如下: public static System.Threading.Thread thread;    public static ce.About welcomefrm;   [STAThread]    static void Main()     {     System.Threading.ThreadStart start=new ThreadStart(ce.ceStart.splashForm);     thr...[ 查看全文 ]
  •   Delphi中MIDAS如何控制前台权限   (1)原理:      前台程序与应用程序服务器之间是通过DCOM机制的运行来传送数据,DCOM对象的安全机制是以Windows NT的安全模块为构建基础,换句话说,要设置某个用户是否有远程运行DCOM对象的能       力,最基本的条件是这个用户一定要被加入Windows NT的用户组内,如此才有资格连上Windows NT Server...[ 查看全文 ]
手机页面 收藏网站 回到头部