如何在程式中內嵌其它應用程式

2013061010:05
出處:http://www.dotblogs.com.tw/larrynung/archive/2013/02/23/91701.aspx

最近筆者再嘗試實現類似Chrome的程式架構,程式由多個Process組成並協同運作,因此最先要碰到的課題就是要把別的應用程式Process給內嵌到程式內。

 

以內嵌小算盤為例,會期望程式能達到像下面這樣的效果:

image

 

要實現這樣的需求不難,叫出其它應用程式的Process後,待視窗出來後用SetParent API將它內嵌到我們程式的元件,再呼叫MoveWindow API將應用程式塞滿元件就可以了。

01 ...
02 var handle = m_Process.MainWindowHandle;
03              
04 if (HideApplicationTitleBar)
05     SetWindowLong(handle, GWL_STYLE, WS_VISIBLE);
06  
07 SetParent(handle, this.Handle);
08  
09 MoveWindow(handle, 0, 0, this.Width, this.Height, true);
10 ...

 

內嵌完後比較麻煩的問題就是要怎樣讓內嵌的視窗隨著我們的程式縮放,這邊只要在我們的程式縮放時在次呼叫MoveWindow API調整就可以了。

1 void