gpt4 book ai didi

c# - 视觉样式在进程内 COM 服务器上不起作用

转载 作者:太空狗 更新时间:2023-10-29 21:55:19 25 4
gpt4 key购买 nike

我正在开发一个使用视觉样式的程序。 Main 方法如下所示:

[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form());
}

该程序还可以作为另一个应用程序的插件使用,在这种情况下,它是通过 COM 启动的。问题是调用应用程序(COM 客户端)没有调用 EnableVisualStyles,这是我无法控制的。在这种情况下,程序启动如下:

public static void StartAsPlugin() {
Application.EnableVisualStyles();
Form form = new Form();
form.ShowDialog();
}

当程序作为插件启动时,进度条和组合框的呈现方式与程序正常启动时的样式不同,但按钮、复选框和单选按钮正常。有没有办法强制视觉风格?我试过 list 但没有运气!这是我尝试过的 list :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="RealApp"
type="win32"
/>
<description>Your application description here.</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>

我认为 list 已正确嵌入,因为 ildasm 在 list 部分显示了以下内容:

.mresource public RealApp.RealApp.exe.manifest
{
// Offset: 0x000004F0 Length: 0x0000029B
}

谢谢,斯泰尼奥

最佳答案

用 Raymond Chen 的话说,插件是宿主进程中的客人,不应该换地毯。

http://blogs.msdn.com/b/oldnewthing/archive/2010/04/30/10004931.aspx

无法打开它们,因为这不是您真正应该做的事情。

如果宿主进程不想使用视觉样式,您可能不应该使用它们。当托管在没有视觉样式的应用程序中时,请考虑允许您的插件在没有视觉样式的情况下呈现。

否则,请参阅上面@Ken 的建议。

关于c# - 视觉样式在进程内 COM 服务器上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8298693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com