将某个第3方的程序窗口.将他限制在自己的FORM里运行.这个叫什么技术?(200分)

  • 主题发起人 主题发起人 qn-wl
  • 开始时间 开始时间
Q

qn-wl

Unregistered / Unconfirmed
GUEST, unregistred user!
将某个第3方的程序窗口.将他限制在自己的FORM里运行.这个叫什么技术?
知道的请告诉我一下.
我好GG上去查.
 
这叫认爹技术!
Windows.SetParent(别人的程序的HWnd,Form.Handle{自己的Form});
 
wql说的很对,确实如此
parent的意思就是爹啊,妈啊的
收养的孩子哦。。。。。。。。
 
Windows.SetParent
弄进来也没用呀,标题栏啥的也弄不掉,显得很愣,其实没啥意思
没有什么技术而言~~
 
强抢民女技术?
[:D]
 
QJ技术......
 
我靠。回家真经典
 
你还可以用 SetWindowLong 去掉它的标题条,用API还可以插入自己的菜单,进行很多控制,不过没有意义,别花这个时间
 
问问楼主知道不知道句柄是啥子先~
 
窗体绑架技术。。。。

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


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

代码:
在窗体的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;
------------------其实用到的也和wql一样,只是他的叫法比较直接。
 
后退
顶部