這是一種古怪的,雖然不完全,但我在想如果有一種方法來創建一個窗口,可以包含自定義應用程序(即* .exe)。例如有一個主窗口,並在一個選項卡中包含Application1,在另一個選項卡中包含Application2。不知道該怎麼標記這個,所以只是拋出一些可能有用的標籤。有沒有辦法讓窗口在Windows中包含自定義應用程序?
回答
可以使用WinForms MDI主機在窗口內運行窗口。但是,要運行一個通用的.exe文件,沒有您期望它符合的特定標準,將是困難的或不可能的。
,如果你使用Visual Studio工具箱上
點擊
右鍵單擊 「選擇項目...」
等待時間
browse to your exe
pick the controls
注意一個愚蠢的量你的代碼仍然需要能夠在運行時解析控件,這意味着部署.NET程序集,或者用於ActiveX部署互操作程序集並且具有t他COM DLL註冊。
要在正在運行的表單應用程序中託管一個單獨的exe文件並不容易;你必須產生exe(Process.Start),然後使用win32調用來獲得合適的窗口句柄,並將窗口重新設爲你自己的窗口。這是一個合理的工作量,非常容易出錯,而且非常脆弱(如果你把它賣掉,就會發生不好的事情)。個人:我根本不會。
子類化是錯誤的術語。重新裝修就是你的意思。 –
可以這樣做。您可以調用Win32函數SetParent
來使應用程序的主窗口成爲其中一個窗口的子窗口。
但是,試圖做到這一點很少結束。總是另一個應用程序不期望你這樣做,並與它不兼容。這樣做會對這些進程的輸入隊列造成嚴重的限制。
雷蒙陳博客中提到這一點:Is it legal to call have a cross-process parent/child or owner/owned window relationship?
從技術上法律有一個父/子或所有者來自不同進程的窗口之間/資關係?
是的,這在技術上是合法的。
從技術角度來看,雜耍鏈鋸也是合法的。
創建跨線程父/子或擁有者/擁有的窗口關係隱式地附加這些窗口所屬的線程的輸入隊列,並且此附件是傳遞的:如果其中一個隊列連接到第三個隊列,那麼所有三個隊列都相互連接。更一般地說,由父/子鏈或擁有者/擁有或共享線程關係鏈相關的所有窗口的隊列彼此相連。
當父/子或所有者/所有者關係跨越流程時,這變得更加複雜,因爲跨進程協調比跨線程協調更困難。在一個流程中共享變量要比跨流程共享變量容易得多。最重要的是,一些窗口消息在進程之間被阻塞。
所以是的,這在技術上是合法的,但是如果你創建了一個跨進程的父/子或所有者/所有者關係,後果可能很難管理。如果其中一個或兩個窗口都不知道它正在參與跨進程窗口樹,它們幾乎不可能管理。 (我經常在某人想要抓住屬於另一個進程的窗口的背景下看到這個問題,並強制將它移植到他們自己的進程中,而另一個進程完全沒有準備好以這種方式操縱窗口,並且事情可能會停止工作。事實上,如果將其他窗口從頂層窗口更改爲子窗口,事情肯定會停止工作。)
甚至允許您執行此操作是向代碼寫入16位Windows。它在現代Windows中確實沒有位置。
- 1. 有沒有辦法在java中查詢windows系統的特定程序窗口?
- 2. 沒有窗口的Windows應用程序
- 3. CakePHP:有沒有辦法在hasAndBelongsToMany的定義中包含變量?
- 4. 有沒有辦法在WPF窗口中託管DirectX12應用程序?
- 5. 有沒有辦法在LWJGL/LibGDX中設置應用程序窗口的位置?
- 6. 有沒有辦法讓C#中的應用程序iphone
- 7. 有沒有辦法自定義iPhone上現有的聯繫人應用程序?
- 8. 有沒有辦法讓Word自動鏈接自定義協議?
- 9. 有沒有辦法讓python應用程序無法運行?
- 10. 有沒有辦法在android上運行windows mobile應用程序?
- 11. 有沒有辦法在android中創建自定義應答機?
- 12. 有沒有辦法在WCF中進行自定義序列化?
- 13. 有沒有辦法將C++庫包含到XUL桌面應用程序中?
- 14. 有沒有辦法讓一個窗口的所有BindingExpression對象?
- 15. 有沒有辦法讓現有的cmd窗口執行命令?
- 16. 有沒有辦法讓本機操作系統應用程序
- 17. 有沒有辦法讓phonegap應用程序更安全?
- 18. 有沒有辦法讓Java應用程序獲得root權限?
- 19. 有沒有辦法讓模糊Swing應用程序?
- 20. 有沒有辦法自定義JLabel?
- 21. 有沒有辦法自定義Sharekit?
- 22. 有沒有辦法讓自定義目標取決於CPack?
- 23. 有沒有辦法讓我的Android應用程序在安裝時運行一些自定義代碼?
- 24. 有沒有辦法在ASP.NET中定義應用程序的時區?
- 25. 有沒有辦法讓WinRT應用程序測量自己的CPU使用率?
- 26. Qt5快速應用程序窗口沒有在Windows上顯示
- 27. 有沒有辦法將我的控制檯應用程序轉換爲C#中的Windows窗體應用程序?
- 28. 有沒有辦法讓圖像延伸超過窗口邊界?
- 29. 有沒有辦法讓任何窗口被點擊?
- 30. 有沒有辦法讓firebug同時顯示Console和HTML窗口?
什麼是「自定義應用程序」? –
@DavidHeffernan任何* .exe應用程序 – dchhetri