Windows環境下Electron中的子窗口嵌入(Owned Window)
前言由於目前正在開發一個基於Electron的,模仿瀏覽器的多標籤頁管理機制,想實現BrowserWindow拖出來為原窗口這種效果,因此稍微在網路上搜尋了一下,發現沒有現成的答復。但是這個Issue給了我一些啟發:Embed External Native Windows - electron。
研究最開始的嘗試使用一些簡單的Tricks實現了Windows環境下Electron中的子窗口嵌入。由於Electron並沒有提供真正的窗口嵌入的API,因此這個方法通過C#調用Win32API,來實現子窗口嵌入。目前只論證了原理上的可行性,至於後續是否有其他的問題和Bug還需後續繼續探索。
先使用WinSpy++找到父窗口的Chrome_RenderWidgetHostHWND,複製下它的句柄(Handle)。
再找到子窗口本身(Class: Chrome_WidgetWin_1),複製下它的句柄。
打開Visual Studio,創建一個控制台C#解決方案,在源文件中鍵入以下代碼:
1234567891011121314151617181920212223242526272829303 ...