国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Delphi > 正文

綁架窗體之Delphi版

2019-11-18 18:26:26
字體:
來源:轉載
供稿:網友
 

“綁架窗體”:顧名思義,就是將其它應用程序甚至系統程序的窗體活生生地拖進本程序的窗體內。這種未征得其它程序同意的強行“綁架”行為在某些場合下卻能發揮出非常獨特的作用。本文將討論“綁架”窗體的技術及應用,并給出了一個完整的“強盜”程序的例子。
從技術上講,為了實現“綁架”,“強盜”程序中必須要有一個 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/


上一篇:DELPHI基礎開發技巧

下一篇:Delphi中動態鏈接庫(DLL)的建立和使用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 方正县| 龙州县| 贵溪市| 通州区| 隆安县| 郸城县| 九龙城区| 南京市| 巴彦淖尔市| 扶沟县| 铅山县| 墨竹工卡县| 台北市| 台中市| 元氏县| 南通市| 宜黄县| 黎川县| 永清县| 宁武县| 大同市| 加查县| 正安县| 龙南县| 耿马| 阿城市| 夏河县| 孙吴县| 遵化市| 孝义市| 南皮县| 林甸县| 信阳市| 鲜城| 瑞金市| 望都县| 昭觉县| 卢湾区| 资溪县| 建水县| 伽师县|