應朋友要求,需要將乙個第三方應用程式嵌入到本程式winform視窗,以前在vb6時代做過類似的功能,其原理就是利用windows api中findwindow函式找到第三方應用程式控制代碼,再利用setparent函式,將該控制代碼設定為本視窗的子視窗。
網上搜尋大部分都是利用system.diagnostics.process獲取外部應用程式的mainwindowhandle,貌似以前的com應用程式可以,在win10下呼叫process.mainwindowhandle會提示「應用程式已退出」,也就是獲取不到應用程式控制代碼。於是轉換思路,利用findwindow查詢視窗控制代碼,測試成功。
但是需要注意的是,有些第三方應用程式對訪問許可權要求高,需要「以管理員身份執行"/bin/debug"下的exe檔案才能成功嵌入,**除錯無效,除錯模式呼叫setparent會返回-5錯誤。
以下是部分**:
//////將指定的程式嵌入指定的控制項
/// private
void
embedprocess()
try
//移除邊框樣式
setwindowlong(new handleref(this
, p), gwl_style, ws_visible);
//移動視窗
movewindow(p, 0, 0, this.width, this.height, true
); }
catch
(exception ex1)
}
winform 嵌入 外部 exe窗體
using system using system.collections.generic using system.componentmodel using system.drawing using system.data using system.text using system.window...
在WinForm應用程式中嵌入WPF控制項
我們知道,在 wpf介面上新增 winform 的控制項需要使用 windowsformhost 類。而在 winform 介面上新增 wpf控制項該如何做呢?有沒有類似的類呢?明顯是有的,elementhost 就是為了在 winform 應用程式中嵌入 wpf元素而定義的。它繼承自system....
在WinForm應用程式中嵌入WPF控制項
我們知道,在 wpf介面上新增 winform 的控制項需要使用 windowsformhost 類。而在 winform 介面上新增 wpf控制項該如何做呢?有沒有類似的類呢?明顯是有的,elementhost 就是為了在 winform 應用程式中嵌入 wpf元素而定義的。它繼承自system....