国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 保康县| 迁西县| 镇远县| 威宁| 犍为县| 都江堰市| 兴业县| 景洪市| 乌兰县| 灌阳县| 高唐县| 西林县| 杨浦区| 永州市| 安乡县| 鹿邑县| 衢州市| 昆明市| 文成县| 西城区| 双牌县| 安龙县| 保亭| 保康县| 潼南县| 鹿邑县| 邹平县| 宜城市| 信宜市| 萨嘎县| 盐津县| 彭山县| 台江县| 京山县| 唐山市| 织金县| 平利县| 两当县| 广丰县| 桦南县| 衡山县|