通過 WIN32 API 實現嵌入程式窗體

2022-09-16 22:48:20 字數 2564 閱讀 4092

寫了乙個不使用 com, 而是通過 win32 api 實現的示例, 它把寫字板程式嵌在了自己的乙個面板中. 

這麼做可能沒有實際意義, 因為兩個程式之前沒有進行有價值的互動, 這裡僅僅是為了演示這麼做到, 以下是詳細注釋過的主要源**.

我把它封裝到乙個類中:

[csharp]copy

using system;  

using system.collections.generic;  

using system.linq;  

using system.text;  

using system.diagnostics;  

using system.runtime.interopservices;  

using system.windows.forms;  

namespace system.windows.forms  

~insertwindow()  

}  #region  函式和變數宣告  

/* * 宣告 win32 api 

*/  

[dllimport("user32.dll")]  

static extern intptr setparent(intptr hwndchild,  

intptr hwndnewparent  

);  

[dllimport("user32.dll")]  

static extern int32 getwindowlong(intptr hwnd,  

int32 nindex  

);  

[dllimport("user32.dll")]  

static extern int32 setwindowlong(intptr hwnd,  

int32 nindex,  

int32 dwnewlong  

);  

[dllimport("user32.dll")]  

static extern int32 setwindowpos(intptr hwnd,  

intptr hwndinsertafter,  

int32 x,  

int32 y,  

int32 cx,  

int32 cy,  

uint32 uflags  

);  

/* * 定義 win32 常數 

*/  

const int32 gwl_style = -16;  

const int32 ws_border = (int32)0x00800000l;  

const int32 ws_thickframe = (int32)0x00040000l;  

const int32 swp_nomove = 0x0002;  

const int32 swp_nosize = 0x0001;  

const int32 swp_nozorder = 0x0004;  

const int32 swp_framechanged = 0x0020;  

const int32 sw_maximize = 3;  

intptr hwnd_notopmost = new intptr(-2);  

// 目標應用程式的程序.  

process m_innerprocess = null;  

#endregion  

#region  容器  

private panel pan = null;  

public panel panel1  

get   

}  private void pane()  

private void panel1_resize(object sender, eventargs e)  

#endregion  

#region  相應事件  

#endregion  

}  }  

然後在 視窗的 load事件中 加入

詳細** 如下: 

[csharp]copy

using system;  

using system.collections.generic;  

using system.componentmodel;  

using system.data;  

using system.drawing;  

using system.linq;  

using system.text;  

using system.windows.forms;  

using system.runtime;  

using system.runtime.interopservices;  

using system.diagnostics;  

namespace 將程式視窗嵌入到工作列中  

private void form1_load(object sender, eventargs e)  

}  }  

通過 WIN32 API 實現嵌入程式窗體

寫了乙個不使用 com,而是通過 win32 api 實現的示例,它把寫字板程式嵌在了自己的乙個面板中.這麼做可能沒有實際意義,因為兩個程式之前沒有進行有價值的互動,這裡僅僅是為了演示這麼做到,以下是詳細注釋過的主要源 我把它封裝到乙個類中 csharp copy using system usin...

C 通過呼叫Win32API實現讀寫ini檔案

ini檔案在很長一段時間作為程式配置檔案很流行,而寫有很多老一輩程式設計師都喜歡使用ini格式的檔案做為軟體系統的配置檔案,因此有必要在進行c 程式開發是了解一下對ini檔案的讀寫操作。本次分享c 呼叫win32api的方式實現ini檔案的讀寫操作。win32tool using system us...

通過win32api讓c 控制Windows工作列

c 中宣告如下 using system.runtime.interopservices dllimport user32.dll entrypoint findwindowa public static extern intptr findwindowa string lp1,string lp2...