WPF應用程式嵌入第三方exe

2021-08-20 10:18:29 字數 1981 閱讀 7577

思路是,

第一步:在自己的應用程式中準備顯示第三方控制項的容器,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 第三方控制項

目前第三方控制項在網上形成巨大的共享資源,其中包括收費的也有免費的,有開源的也有不開源的,合理的使用第三方控制項將使專案組的工作事半功倍。比如專案中有些複雜的業務邏輯 有些絢麗的效果需要有專門的定製控制項才能完成,這個時候我們會考慮到是專案組自己開發還是用第三方的控制項,其實很多時候我們都會權衡時間...