【发布时间】:2012-03-10 08:27:39
【问题描述】:
我正在编写一个小程序来解决与 16 位程序的兼容性问题。此修复是关闭 explorer.exe,因为 explorer 会覆盖程序中的一些调色板。之后,我们重新打开资源管理器。
当使用 .bat 文件时,它可以工作:
@ECHO OFF
taskkill /f /IM explorer.exe
EmStraditionX.exe
start /B explorer.exe
这种方法并不理想,因为它需要下载额外的文件。为了简单起见,假设我不可能分发比 C# 兼容程序更多的东西。
我的第一个想法是Process.Start("explorer.exe"),但这不起作用,而是在资源管理器窗口中打开了“库”文件夹,而没有让任务栏再次可见。
然后我尝试使用与批处理文件相同的命令,除了这样:Process.Start("cmd.exe", "/C start /B explorer.exe"),它再次不起作用。
有人知道如何从 C# 重新打开任务栏吗?
谢谢, 瑞化。
【问题讨论】:
-
兼容性问题的答案几乎肯定不是“杀死资源管理器”。您是否查看过兼容性垫片? (也许在应用运行时将配色方案强制恢复为 Aero Basic?)
-
你说后两种方法都行不通——你试过后发生了什么?有什么发射吗?另外,您是否考虑过摆弄
Process.Start的其他变体(即允许您指定更高级启动选项的变体)? -
@josh3736:不开玩笑,这是解决办法。我们正在检查程序分配了哪些调色板,并且因为 Windows 7 在不同的(我想假设是模拟的)环境中运行 16 位应用程序,它覆盖了任务栏的第一个应用程序。我们关闭资源管理器的那一刻,程序再次控制了调色板。
-
@Reuben:它只打开“库”文件夹。没有其他的。 bat 文件按预期打开任务栏。
标签: c# windows-7 cmd explorer taskbar