我使用此代码:
Shared Sub OpenApplication(ByVal ApplicationPath As String)
Dim p As Process
Dim ShowForm As New Form
Dim FormPanel As New Panel
FormPanel.Dock = DockStyle.Fill
ShowForm.Controls.Add(FormPanel)
p = Process.Start(ApplicationPath)
Threading.Thread.Sleep(500)
SetParent(p.MainWindowHandle, FormPanel.Handle)
ShowForm.Show()
End Sub
但它在带有边框的面板中运行应用程序。 如果我制作自己的虚拟操作系统,如何将边框更改为无? 像Windows 7有自己的形式边框,Windows 8和Mac也是如此。 但我自己制作边框。它的图形,如何让应用程序使用我的边框?
这是一些例子(我无法发布图片):
Windows 8 Notepad with Their UI Design (it's Form Border for me)
Windows 7 Notepad with Their UI Design
这是我的UI设计:
(抱歉,我无法插入更多的2个链接,删除http中的空格:“Space”//)
http://40-89-67-30-21.weebly.com//files/theme/Notepad.png
如何在我的虚拟操作系统中双击notepad.exe或其他.exe文件时这样做? (这是编辑版!):
http://40-89-67-30-21.weebly.com//files/theme/Notepad_edited.png
它使用我自己的UI设计运行exe。我怎么能这样做?
答案 0 :(得分:0)
默认情况下,第三方应用程序不支持第四方开发人员进行品牌重塑,甚至特定于操作系统的编码约定也不会强迫他们这样做,除了支持品牌推广操作系统,如尊重system colors,accessibility features等。
为了实现这一点,您必须执行大量低级别黑客攻击,拦截UI消息(如WM_NCCALCSIZE或WM_PAINT)等,或者替换包含UI的完整库使用您自己的绘制API(如GDI32.DLL)。
所有这些都需要精确的工作,对各种低级方面的良好理解以及与系统其余部分协调良好的代码以及大约数千行代码,包括一些native (not managed) code。
它可行,但不简单,请参阅例如Stardock's WindowBlinds
另见:
windows skins