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

首頁 > 編程 > Delphi > 正文

綁架窗體之Delphi版

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

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


實現“綁架”的第二個條件,是必須知道被“綁架”窗體的句柄。做到這一點并不難。比如,當鼠標在屏幕上滑動時,我們可以用 API函數GetCursorPos來獲得鼠標指針的當前位置坐標,然后用另一個 API函數 WindowFromPoint來獲得指定點窗口的句柄。或者使用FindWindow獲得窗口句柄。
有了上述兩個條件,“強盜”程序就可以開始實施“綁架”了:首先用 API函數GetWindow 的GW_CHILD命令來尋找本程序第一個子窗口的句柄;然后用另一個 API函數 SetParent為被“綁架”窗體指定一個“新父”,即指向上面的子窗口的句柄。立刻,兩個原本毫無關系的窗體具有了“父子”關系:被“綁架”窗口出現在“強盜”窗體內部!
二、“綁架”的安全性
不分青紅皂白地進行“綁架”是非常危險的。但只要遵守以下兩個原則就可以保證安全性:
第一,在關閉“強盜”程序之前,把被“綁架”窗體用 SetParent函數“釋放”掉,即恢復被“綁架”者的原來的“父親”。
第二,不要“綁架”系統(tǒng)窗口。系統(tǒng)窗口一般有:任務欄窗口、按下“開始”產生的窗口、按下“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開發(fā)單機瘦數據庫程序要點

下一篇:在Delphi中自己建立交叉表

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

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 白水县| 如皋市| 嘉鱼县| 孟州市| 广丰县| 启东市| 昌宁县| 玛多县| 太和县| 江门市| 丽江市| 谷城县| 汝城县| 福泉市| 美姑县| 渭南市| 秭归县| 瑞安市| 南城县| 化德县| 枝江市| 祁连县| 平邑县| 长阳| 九江市| 本溪| 珲春市| 尼玛县| 织金县| 安多县| 南丹县| 吴堡县| 辰溪县| 仪征市| 花垣县| 青海省| 砚山县| 昭通市| 上林县| 武夷山市| 梅河口市|