思路是,
第一步:在自己的應用程式中準備顯示第三方控制項的容器,border,grid什麼的都可以,下面是觸發**
private void button_click(object sender, routedeventargs e)
第二步:編寫啟動第三方exe的類,主要是獲取第三方窗體的控制代碼,這裡需要一些windowapi,然後啟動流程就是先把第三方控制項啟動,然後嵌入到自己的應用程式中。這樣就有乙個問題,先第三方exe起來,過會再嵌入。解決思路是程式初始化的時候做這些事情using system;
using system.collections.generic;
using system.linq;
using system.runtime.interopservices;
using system.text;
using system.threading;
using system.threading.tasks;
using system.windows;
using system.windows.controls;
using system.windows.interop;
namespace embedvusion
protected override handleref buildwindowcore(handleref hwndparent)
// 嵌入在hwnhost中的視窗必須要 設定為ws_child風格
oldstyle = getwindowlong(hwndhost, gwl_style);
uint newstyle = oldstyle;
//ws_child和ws_popup不能同時存在。有些win32視窗,比如qq的視窗,有ws_popup屬性,這樣嵌入的時候會導致程式錯誤
newstyle |= ws_child;
newstyle &= ~ws_popup;
newstyle &= ~ws_border;
setwindowlong(hwndhost, gwl_style, newstyle);
//將視窗居中,實際上是將視窗的容器居中
reposwindow(wndhoster, wndhoster.width, wndhoster.height);
//將netterm的父視窗設定為hwndhost
setparent(hwndhost, hwndparent.handle);
return new handleref(this, hwndhost);
}protected override void destroywindowcore(system.runtime.interopservices.handleref hwnd)
[structlayout(layoutkind.sequential)]
public struct rect
[structlayout(layoutkind.sequential)]
public struct windowinfo
public delegate bool callbackptr(intptr hwnd, ref windowinfo wndinforef);
private static callbackptr callbackptr;
private windowinfo wininfo;
public static bool callbackproc(intptr hwnd, ref windowinfo wndinforef)
return true;
}public intptr findthewindow()
public void reposwindow(border b, double screenw, double screenh)
}}
我實現的乙個demo
Android啟動第三方應用程式
兩種方式啟動 第一 intent intent new intent intent.setclassname 包名 要啟動應用的activity startactivity intent 另外一種 intent intent new intent intent mainactivity.this.g...
內嵌第三方EXE程式視窗
近日,在做乙個將乙個第三方應用視窗嵌入自己的程式視窗內部的功能,經過幾次摸索,終於能比較好的嵌入進去了,為方便敘述,以下稱需要被嵌入應用視窗為目標視窗,承載嵌入應用視窗的為宿主視窗,目標視窗為任意第三方應用,宿主視窗為自己開發。將目標視窗完美嵌入,關鍵在於將目標視窗做為宿主視窗的子視窗,這樣作業系統...
WPF 第三方控制項
目前第三方控制項在網上形成巨大的共享資源,其中包括收費的也有免費的,有開源的也有不開源的,合理的使用第三方控制項將使專案組的工作事半功倍。比如專案中有些複雜的業務邏輯 有些絢麗的效果需要有專門的定製控制項才能完成,這個時候我們會考慮到是專案組自己開發還是用第三方的控制項,其實很多時候我們都會權衡時間...