本技術(shù)涉及計(jì)算機(jī)軟件開(kāi)發(fā)的,具體涉及一種嵌套應(yīng)用程序開(kāi)發(fā)的方法、系統(tǒng)、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,各種應(yīng)用程序開(kāi)發(fā)框架和技術(shù)不斷涌現(xiàn),以滿足多樣化的用戶需求。其中,wpf(windows?presentation?foundation,windows呈現(xiàn)基礎(chǔ))作為一種強(qiáng)大的桌面應(yīng)用程序開(kāi)發(fā)框架,廣泛應(yīng)用于windows平臺(tái)的軟件開(kāi)發(fā)。
2、在現(xiàn)有的技術(shù)方案中,wpf應(yīng)用程序通常通過(guò)獨(dú)立的窗口來(lái)展示web(網(wǎng)頁(yè))內(nèi)容和游戲渲染結(jié)果,這種方式雖然簡(jiǎn)單直接,但用戶在使用時(shí)需要切換不同的窗口,影響了用戶體驗(yàn)的連貫性。此外,web內(nèi)容與游戲渲染結(jié)果之間的交互也往往受限于不同的窗口環(huán)境,難以實(shí)現(xiàn)流暢的數(shù)據(jù)傳輸和操作同步。
3、因此,如何在wpf應(yīng)用程序中實(shí)現(xiàn)webview2控件與unreal?engine渲染窗口的高效整合,提升用戶體驗(yàn),降低操作復(fù)雜度,成為當(dāng)前亟待解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)提供一種嵌套應(yīng)用程序開(kāi)發(fā)的方法、系統(tǒng)、設(shè)備及存儲(chǔ)介質(zhì),采用hwndhost類嵌套管理webview2控件和unreal?engine渲染窗口,實(shí)現(xiàn)了wpf、webview2和unrealengine之間的無(wú)縫集成和高效交互,提高了應(yīng)用程序的交互性和渲染性能。
2、在本技術(shù)的第一方面提供了一種嵌套應(yīng)用程序開(kāi)發(fā)的方法,應(yīng)用于wpf應(yīng)用程序,所述方法包括:
3、集成webview2控件,將所述webview2控件的背景設(shè)置為透明,創(chuàng)建無(wú)邊框和透明背景的窗口;
4、使用hwndhost類嵌套管理所述webview2控件和unreal?engine程序的渲染窗口;
5、通過(guò)所述webview2控件加載預(yù)設(shè)網(wǎng)頁(yè)的內(nèi)容,并將所述內(nèi)容顯示在所述窗口中;
6、當(dāng)接收到所述預(yù)設(shè)網(wǎng)頁(yè)輸入的指令時(shí),將所述指令發(fā)送給所述unreal?engine程序,并通過(guò)所述渲染窗口顯示所述unreal?engine程序執(zhí)行所述指令的渲染結(jié)果。
7、通過(guò)采用上述技術(shù)方案,使用webview2控件加載網(wǎng)頁(yè)內(nèi)容,用戶可以在wpf應(yīng)用程序中直接訪問(wèn)和交互網(wǎng)頁(yè),無(wú)需打開(kāi)瀏覽器,從而提供了更流暢和集成的用戶體驗(yàn)。設(shè)置webview2控件的背景為透明,并創(chuàng)建無(wú)邊框窗口,可以使得應(yīng)用程序的界面更加現(xiàn)代化和美觀,同時(shí)提供了更靈活的布局選項(xiàng)。使用hwndhost類來(lái)管理webview2控件和unrealengine的渲染窗口,可以有效地共享和協(xié)調(diào)兩者的資源,減少內(nèi)存占用和提高性能。當(dāng)webview2控件接收到預(yù)設(shè)網(wǎng)頁(yè)的輸入指令時(shí),能夠即時(shí)將這些指令傳遞給unreal?engine程序,并通過(guò)渲染窗口展示執(zhí)行結(jié)果,這為用戶提供了快速的反饋和交互體驗(yàn)。由于webview2控件和unreal?engine都支持跨平臺(tái)開(kāi)發(fā),這種方法可以使得wpf應(yīng)用程序在不同操作系統(tǒng)上都能提供一致的體驗(yàn)。unreal?engine以其強(qiáng)大的3d渲染能力而聞名,通過(guò)這種方法,wpf應(yīng)用程序可以集成復(fù)雜的3d場(chǎng)景和動(dòng)畫(huà),提供更加豐富的視覺(jué)體驗(yàn)。這種方法允許開(kāi)發(fā)者根據(jù)需要輕松地?cái)U(kuò)展或修改應(yīng)用程序的功能,例如添加新的網(wǎng)頁(yè)內(nèi)容或調(diào)整unreal?engine的渲染效果。
8、可選的,所述集成webview2控件包括:
9、使用nuget包管理器安裝所述webview2控件到wpf應(yīng)用程序中,并在所述wpf應(yīng)用程序中添加所述webview2控件的聲明以便引用所述webview2控件;
10、初始化所述webview2控件,并將所述webview2控件的源屬性設(shè)置為所述預(yù)設(shè)網(wǎng)頁(yè)的統(tǒng)一資源定位符。
11、通過(guò)采用上述技術(shù)方案,利用nuget包管理器安裝webview2控件,簡(jiǎn)化了手動(dòng)下載和集成控件的過(guò)程,使得開(kāi)發(fā)者可以快速開(kāi)始項(xiàng)目開(kāi)發(fā)。使用nuget可以確保所有開(kāi)發(fā)者和構(gòu)建環(huán)境使用的是相同版本的webview2控件,減少了版本不一致導(dǎo)致的問(wèn)題。nuget包管理器提供了依賴管理和自動(dòng)更新功能,使得維護(hù)和更新webview2控件變得更加容易。通過(guò)設(shè)置webview2控件的源屬性為預(yù)設(shè)網(wǎng)頁(yè)的url,應(yīng)用程序可以快速加載和顯示網(wǎng)頁(yè)內(nèi)容,無(wú)需用戶手動(dòng)輸入url。webview2控件提供了多種安全特性,如腳本隔離、增強(qiáng)的隱私保護(hù)等,可以提高應(yīng)用程序的安全性。webview2控件支持最新的web標(biāo)準(zhǔn)和技術(shù),如html5、css3和javascript,使得wpf應(yīng)用程序可以利用這些技術(shù)提供豐富的交互體驗(yàn)。通過(guò)聲明和引用webview2控件,開(kāi)發(fā)者可以在xaml中直接使用該控件,簡(jiǎn)化了代碼編寫(xiě),提高了開(kāi)發(fā)效率。這種方法允許開(kāi)發(fā)者在wpf應(yīng)用程序中嵌入web頁(yè)面,實(shí)現(xiàn)web和本地應(yīng)用的混合開(kāi)發(fā),提供了更多的開(kāi)發(fā)可能性。webview2控件的集成使得開(kāi)發(fā)者可以在wpf應(yīng)用程序中設(shè)計(jì)更加靈活和動(dòng)態(tài)的用戶界面,結(jié)合web頁(yè)面的豐富內(nèi)容和wpf的本地ui控件。
12、可選的,所述將所述webview2控件的背景設(shè)置為透明包括:
13、使用所述webview2控件的應(yīng)用程序接口捕獲網(wǎng)頁(yè)的渲染內(nèi)容,并在wpf應(yīng)用程序中將所述渲染內(nèi)容作為透明的圖像或圖層進(jìn)行顯示。
14、通過(guò)采用上述技術(shù)方案,設(shè)置透明背景允許webview2控件的內(nèi)容與wpf應(yīng)用程序的ui元素?zé)o縫融合,提供更加統(tǒng)一和協(xié)調(diào)的界面體驗(yàn)。開(kāi)發(fā)者可以更加自由地設(shè)計(jì)應(yīng)用程序的界面,因?yàn)閣ebview2控件可以適應(yīng)任何背景,包括復(fù)雜的圖形或動(dòng)畫(huà)。用戶可以更直觀地看到網(wǎng)頁(yè)內(nèi)容與應(yīng)用程序其他部分的交互,增強(qiáng)了整體的用戶體驗(yàn)。透明背景使得webview2控件可以放置在任何復(fù)雜的布局中,包括不規(guī)則形狀或具有其他控件的區(qū)域。通過(guò)捕獲渲染內(nèi)容并以圖像或圖層的形式顯示,可以減少對(duì)webview2控件本身的依賴,可能有助于提高應(yīng)用程序的性能。透明背景的webview2控件可以與其他wpf控件或動(dòng)畫(huà)效果相結(jié)合,實(shí)現(xiàn)更豐富的動(dòng)態(tài)交互。允許開(kāi)發(fā)者設(shè)計(jì)多層次的用戶界面,其中webview2控件的內(nèi)容可以作為頂層或底層顯示,與其他ui元素疊加。通過(guò)應(yīng)用程序接口捕獲和顯示渲染內(nèi)容,簡(jiǎn)化了在wpf中集成和顯示webview2控件的過(guò)程。將渲染內(nèi)容作為圖像或圖層處理,可以使webview2控件的集成更加模塊化,便于未來(lái)的維護(hù)和更新。開(kāi)發(fā)者可以對(duì)捕獲的渲染內(nèi)容進(jìn)行自定義處理,比如調(diào)整大小、應(yīng)用濾鏡或進(jìn)行其他圖像處理操作。
15、可選的,所述創(chuàng)建無(wú)邊框和透明背景的窗口包括:
16、設(shè)置windowstyle屬性為none以移除標(biāo)準(zhǔn)邊框,設(shè)置background屬性為transparent以使得背景透明。
17、通過(guò)采用上述技術(shù)方案,開(kāi)發(fā)者可以完全控制窗口的外觀,實(shí)現(xiàn)高度定制化的界面設(shè)計(jì)。透明背景允許窗口內(nèi)容與桌面或其他應(yīng)用程序的背景無(wú)縫集成,提供更加沉浸式的用戶體驗(yàn)。無(wú)邊框窗口可以提供更加現(xiàn)代和流暢的視覺(jué)效果,特別是在設(shè)計(jì)具有動(dòng)畫(huà)或特殊背景的應(yīng)用程序時(shí)。開(kāi)發(fā)者可以根據(jù)應(yīng)用程序的需求,靈活地調(diào)整窗口的形狀和大小,甚至創(chuàng)建非矩形窗口。用戶可以更直觀地與窗口內(nèi)容交互,尤其是在窗口內(nèi)容需要覆蓋其他應(yīng)用程序或桌面元素時(shí)。透明背景使得窗口可以適應(yīng)更復(fù)雜的布局需求,包括不規(guī)則形狀或與特定桌面區(qū)域?qū)R。無(wú)邊框窗口減少了視覺(jué)上的干擾,使得用戶可以更專注于窗口內(nèi)的內(nèi)容。窗口可以動(dòng)態(tài)顯示內(nèi)容,如視頻、動(dòng)畫(huà)或?qū)崟r(shí)數(shù)據(jù),而不受傳統(tǒng)窗口邊框的限制。在某些情況下,自定義窗口可能減少對(duì)系統(tǒng)資源的需求,因?yàn)樗鼈儾话瑯?biāo)準(zhǔn)的窗口裝飾元素。無(wú)邊框和透明背景的窗口可以用于實(shí)現(xiàn)特殊功能,如創(chuàng)建工具提示、彈出窗口或其他輔助性界面元素。在某些應(yīng)用場(chǎng)景下,無(wú)邊框窗口可以減少用戶對(duì)窗口操作的誤解,從而降低意外關(guān)閉或誤操作的風(fēng)險(xiǎn)。
18、可選的,所述使用hwndhost類嵌套管理所述webview2控件和unreal?engine程序的渲染窗口包括:
19、創(chuàng)建繼承自hwndhost的派生類,根據(jù)所述派生類將所述webview2控件的第一窗口句柄與所述hwndhost的第二窗口句柄進(jìn)行關(guān)聯(lián);
20、從unreal?engine程序中獲取渲染窗口句柄,通過(guò)所述派生類設(shè)置所述渲染窗口句柄;
21、在所述wpf應(yīng)用程序和所述unreal?engine程序之間傳遞消息或使用進(jìn)程間通信保持同步。
22、通過(guò)采用上述技術(shù)方案,允許將基于web的控件(webview2)和高性能的3d渲染引擎(unreal?engine)集成到同一個(gè)wpf應(yīng)用程序中,實(shí)現(xiàn)技術(shù)融合。通過(guò)派生自hwndhost的類,可以建立一個(gè)統(tǒng)一的通信機(jī)制,使得wpf應(yīng)用程序能夠與webview2控件和unrealengine程序進(jìn)行交互。通過(guò)直接管理渲染窗口句柄,可以優(yōu)化渲染流程,減少渲染過(guò)程中的性能損耗。使得webview2控件和unreal?engine渲染窗口能夠無(wú)縫集成到wpf應(yīng)用程序的ui(user?interface,用戶界面)中,提供更加豐富和動(dòng)態(tài)的用戶體驗(yàn)。通過(guò)hwndhost類,可以更靈活地管理窗口句柄,實(shí)現(xiàn)復(fù)雜的窗口布局和交互效果。通過(guò)進(jìn)程間通信(ipc)機(jī)制,可以實(shí)現(xiàn)wpf應(yīng)用程序和unreal?engine程序之間的數(shù)據(jù)同步和狀態(tài)共享。通過(guò)優(yōu)化消息傳遞和ipc,可以提高應(yīng)用程序的響應(yīng)速度和交互流暢性??梢詷?gòu)建復(fù)雜的交互邏輯,使得用戶操作可以在wpf界面、webview2控件和unreal?engine渲染窗口之間傳遞。通過(guò)控制消息傳遞和ipc,可以更好地管理數(shù)據(jù)流,提高應(yīng)用程序的安全性。通過(guò)hwndhost類,開(kāi)發(fā)者可以更高效地開(kāi)發(fā)和維護(hù)集成了webview2和unreal?engine的wpf應(yīng)用程序。結(jié)合webview2控件的web內(nèi)容展示能力和unreal?engine的高級(jí)視覺(jué)效果,可以創(chuàng)建極具吸引力的應(yīng)用程序界面。wpf應(yīng)用程序可以根據(jù)用戶交互或外部事件動(dòng)態(tài)更新webview2控件的內(nèi)容和unrealengine的渲染輸出。
23、可選的,所述方法還包括:
24、在wpf應(yīng)用程序中定義能夠被前端程序調(diào)用的第一函數(shù),使用所述webview2控件注入javascript代碼到所述預(yù)設(shè)網(wǎng)頁(yè)中以便所述預(yù)設(shè)網(wǎng)頁(yè)通過(guò)所述javascript代碼調(diào)用所述第一函數(shù);
25、在所述預(yù)設(shè)網(wǎng)頁(yè)定義需要被wpf應(yīng)用程序調(diào)用的第二函數(shù),在所述webview2控件中設(shè)置預(yù)設(shè)對(duì)象以便所述wpf應(yīng)用程序通過(guò)所述預(yù)設(shè)對(duì)象調(diào)用所述第二函數(shù)。
26、通過(guò)采用上述技術(shù)方案,實(shí)現(xiàn)了wpf應(yīng)用程序和預(yù)設(shè)網(wǎng)頁(yè)之間的雙向通信機(jī)制,允許兩者相互調(diào)用對(duì)方的函數(shù)。通過(guò)javascript代碼橋接,網(wǎng)頁(yè)前端可以更靈活地與wpf應(yīng)用程序的后端邏輯進(jìn)行交互。允許開(kāi)發(fā)者在wpf應(yīng)用程序和網(wǎng)頁(yè)前端之間共享和復(fù)用代碼,提高開(kāi)發(fā)效率。通過(guò)預(yù)設(shè)對(duì)象和注入的javascript代碼,簡(jiǎn)化了將網(wǎng)頁(yè)功能集成到wpf應(yīng)用程序的過(guò)程。用戶可以在wpf應(yīng)用程序中無(wú)縫地使用網(wǎng)頁(yè)功能,無(wú)需離開(kāi)應(yīng)用程序環(huán)境。利用javascript和web?api,可以訪問(wèn)和實(shí)現(xiàn)現(xiàn)代web技術(shù),如webgl、websockets等。wpf應(yīng)用程序可以根據(jù)需要?jiǎng)討B(tài)地更新網(wǎng)頁(yè)內(nèi)容或與之交互,提供動(dòng)態(tài)的用戶界面。通過(guò)控制javascript代碼的注入和預(yù)設(shè)對(duì)象的設(shè)置,可以在一定程度上管理安全性,避免潛在的跨站腳本攻擊(xss)。由于javascript是一種廣泛支持的語(yǔ)言,這種方法有助于提高應(yīng)用程序在不同平臺(tái)上的兼容性。允許將復(fù)雜的業(yè)務(wù)邏輯分布在wpf應(yīng)用程序和網(wǎng)頁(yè)前端之間,根據(jù)各自的優(yōu)勢(shì)進(jìn)行處理。
27、可選的,所述方法還包括:
28、在wpf應(yīng)用程序中創(chuàng)建socket客戶端,連接到所述unreal?engine程序提供的socket服務(wù)器,以實(shí)現(xiàn)所述wpf應(yīng)用程序與所述unreal?engine程序之間的通信。
29、通過(guò)采用上述技術(shù)方案,socket通信允許wpf應(yīng)用程序與unreal?engine程序之間進(jìn)行實(shí)時(shí)數(shù)據(jù)交換,這對(duì)于需要快速響應(yīng)的交互式應(yīng)用非常重要。socket通信通常具有較低的延遲,這對(duì)于需要高精度時(shí)間同步的應(yīng)用場(chǎng)景非常有用。socket通信可以支持異步數(shù)據(jù)傳輸,不會(huì)阻塞wpf應(yīng)用程序的用戶界面線程,從而提高應(yīng)用程序的響應(yīng)性。socket是一種跨平臺(tái)的通信方式,可以在不同的操作系統(tǒng)和硬件平臺(tái)上實(shí)現(xiàn)wpf應(yīng)用程序與unrealengine程序之間的通信。socket通信不限定數(shù)據(jù)格式,可以傳輸文本、二進(jìn)制數(shù)據(jù)或其他自定義格式的數(shù)據(jù),提供高度的靈活性。通過(guò)socket,wpf應(yīng)用程序可以更精細(xì)地控制unrealengine程序的行為,例如發(fā)送控制命令或狀態(tài)更新。socket提供了一種相對(duì)簡(jiǎn)單的方式來(lái)集成不同的應(yīng)用程序,減少了對(duì)特定api或中間件的依賴。隨著應(yīng)用程序需求的增長(zhǎng),socket通信可以容易地?cái)U(kuò)展以支持更多的數(shù)據(jù)傳輸和更復(fù)雜的通信模式。通過(guò)使用加密socket連接,可以保護(hù)wpf應(yīng)用程序與unreal?engine程序之間的通信不被未授權(quán)訪問(wèn)。socket通信可以設(shè)計(jì)為具有容錯(cuò)性,能夠處理網(wǎng)絡(luò)延遲、斷開(kāi)連接和重新連接等網(wǎng)絡(luò)問(wèn)題。socket通信可以利用多線程或多進(jìn)程來(lái)提高數(shù)據(jù)處理能力,特別是在處理大量數(shù)據(jù)或高頻率通信時(shí)。相比于其他通信方式,socket通信可以更有效地利用系統(tǒng)資源,減少不必要的開(kāi)銷。socket通信可以支持復(fù)雜的應(yīng)用場(chǎng)景,如多人在線游戲、實(shí)時(shí)協(xié)作工具或分布式系統(tǒng)。
30、在本技術(shù)的第二方面提供了一種嵌套應(yīng)用程序開(kāi)發(fā)的系統(tǒng),包括集成模塊、嵌套模塊、加載模塊以及執(zhí)行模塊,其中:
31、集成模塊,配置用于集成webview2控件,將所述webview2控件的背景設(shè)置為透明,創(chuàng)建無(wú)邊框和透明背景的窗口;
32、嵌套模塊,配置用于使用hwndhost類嵌套管理所述webview2控件和unrealengine程序的渲染窗口;
33、加載模塊,配置用于通過(guò)所述webview2控件加載預(yù)設(shè)網(wǎng)頁(yè)的內(nèi)容,并將所述內(nèi)容顯示在所述窗口中;
34、執(zhí)行模塊,配置用于當(dāng)接收到所述預(yù)設(shè)網(wǎng)頁(yè)輸入的指令時(shí),將所述指令發(fā)送給所述unreal?engine程序,并通過(guò)所述渲染窗口顯示所述unreal?engine程序執(zhí)行所述指令的渲染結(jié)果。
35、在本技術(shù)的第三方面提供了一種電子設(shè)備,包括處理器、存儲(chǔ)器、用戶接口以及網(wǎng)絡(luò)接口,所述存儲(chǔ)器用于存儲(chǔ)指令,所述用戶接口和所述網(wǎng)絡(luò)接口均用于與其他設(shè)備通信,所述處理器用于執(zhí)行所述存儲(chǔ)器中存儲(chǔ)的指令,以使所述電子設(shè)備執(zhí)行如上述任意一項(xiàng)所述的方法。
36、在本技術(shù)的第四方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有指令,當(dāng)所述指令被執(zhí)行時(shí),執(zhí)行如上述任意一項(xiàng)所述的方法。
37、綜上所述,本技術(shù)實(shí)施例中提供的一個(gè)或多個(gè)技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點(diǎn):
38、1、通過(guò)集成webview2控件和unreal?engine程序,用戶可以在一個(gè)無(wú)縫集成的環(huán)境中體驗(yàn)豐富的網(wǎng)頁(yè)內(nèi)容和高質(zhì)量的3d渲染效果。通過(guò)集成不同的技術(shù)組件,可以在wpf應(yīng)用程序中同時(shí)處理多個(gè)任務(wù),如網(wǎng)頁(yè)瀏覽和3d渲染,通過(guò)提供一種集成的方法,可以降低將不同技術(shù)棧(如wpf、webview2和unreal?engine)結(jié)合在一起的開(kāi)發(fā)難度;
39、2、無(wú)邊框和透明背景的窗口設(shè)計(jì)提供了更加現(xiàn)代化和沉浸式的界面體驗(yàn),使得應(yīng)用程序的ui元素和網(wǎng)頁(yè)內(nèi)容更加和諧地融合,透明背景和無(wú)邊框窗口允許開(kāi)發(fā)者自由地設(shè)計(jì)和布局應(yīng)用程序的ui,包括將webview2控件和unreal?engine渲染窗口放置在任何位置;
40、3、通過(guò)webview2控件接收用戶指令并將其傳遞給unreal?engine程序,可以實(shí)現(xiàn)快速的交互反饋,提高用戶操作的響應(yīng)性,使用hwndhost類管理webview2控件和unrealengine渲染窗口,有助于優(yōu)化資源使用,減少內(nèi)存占用,并提高應(yīng)用程序的性能;
41、4、通過(guò)控制webview2控件和unreal?engine程序的集成方式,可以在一定程度上提高應(yīng)用程序的安全性,防止?jié)撛诘膼阂獯a執(zhí)行,webview2控件可以動(dòng)態(tài)加載和更新網(wǎng)頁(yè)內(nèi)容,而unreal?engine程序可以根據(jù)這些內(nèi)容實(shí)時(shí)渲染3d場(chǎng)景或動(dòng)畫(huà),結(jié)合了網(wǎng)頁(yè)內(nèi)容和3d渲染的應(yīng)用程序可以開(kāi)拓新的應(yīng)用場(chǎng)景,如教育、游戲、模擬和可視化等。