91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SWT程序中怎么嵌入第三方程序的窗口

發布時間:2021-12-15 16:28:35 來源:億速云 閱讀:156 作者:iii 欄目:大數據

本篇內容主要講解“SWT程序中怎么嵌入第三方程序的窗口”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“SWT程序中怎么嵌入第三方程序的窗口”吧!

       在開發系統的時候經常需要嵌入外部的程序,比如將企業原有的系統集成到我們的系統中,而且要求看起 來像和我們的程序一樣嵌入到我們的系統中,這時就要借助于Win32了。在以前使用VC、Delphi、C#開發的 使用的時候可以直接調用Win32的API來操作,好在SWT中提供了Win32API的封裝,而且封裝的比較好,大部 分都在org.eclipse.swt.internal.win32.OS這個類中。核心原理就是調用SetParent這個API將我們的程序中的某個控件設置為被嵌套程序的父窗口。 

   核心代碼如下:  

   private void execute(String fileName) throws Exception  {   

int hHeap = OS.GetProcessHeap ();    

TCHAR buffer = new TCHAR (0, fileName, true);    

int byteCount = buffer.length () * TCHAR.sizeof;    

int lpFile = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, byteCount);    

OS.MoveMemory (lpFile, buffer, byteCount);    

SHELLEXECUTEINFO info = new SHELLEXECUTEINFO ();    

info.cbSize = SHELLEXECUTEINFO.sizeof;  

//隱藏啟動 

info.lpFile = lpFile;      

info.nShow = OS.SW_HIDE;    

boolean result = OS.ShellExecuteEx (info);    

if (lpFile != 0) {

OS.HeapFree (hHeap, 0, lpFile);   

        }

if(result==false){    

throw new Exception("啟動失敗!");

        }

}    

protected void startThirdExe() throws Exception {   

//"notepad.exe"為待啟動的程序名   

execute("notepad.exe");

//等待NotePad.exe啟動并且初始化完畢,需要根據實際情況調整sleep的時間

Thread.sleep(1000);

//"Notepad"為被嵌套程序窗口的ClassName(Win32級別),可以使用Spy++等工具查看   

int notepadHwnd = OS.FindWindow(new TCHAR(0,"Notepad",true),null);

//&~WS_BORDER去掉內嵌程序邊框,這樣看起來更像一個內嵌的程序。如果需要顯示邊框,則將這兩行代 碼刪除   

int oldStyle = OS.GetWindowLong(notepadHwnd, OS.GWL_STYLE);

OS.SetWindowLong(notepadHwnd, OS.GWL_STYLE, oldStyle&~OS.WS_BORDER);

//composite為承載被啟動程序的控件   

OS.SetParent(notepadHwnd, composite.handle);      

//窗口最大化   

OS.SendMessage(notepadHwnd, OS.WM_SYSCOMMAND, OS.SC_MAXIMIZE, 0);   

}  

SWT程序中怎么嵌入第三方程序的窗口

到此,相信大家對“SWT程序中怎么嵌入第三方程序的窗口”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

swt
AI

婺源县| 榆社县| 普洱| 南昌县| 敦化市| 黑河市| 潜山县| 乌拉特前旗| 新源县| 昂仁县| 翁源县| 彭泽县| 巴马| 芦溪县| 易门县| 大洼县| 阿勒泰市| 财经| 江孜县| 嵊泗县| 横山县| 宜兴市| 荔浦县| 射洪县| 称多县| 临西县| 交口县| 翁牛特旗| 海安县| 江门市| 大余县| 嵊州市| 交城县| 保山市| 沅江市| 龙海市| 青田县| 四子王旗| 景谷| 博兴县| 甘孜|