我有一个应用程序,它将一个.exe文件下载到临时文件夹并使用System.Diagnostics.Process类运行它。到目前为止,我已经用它运行了两个不同的应用程序。其中一个是控制台应用程序,另一个是完整的Windows应用程序。Windows应用程序在任务栏/标题栏中有它的图标,但控制台应用程序只有一个通用的应用程序图标。如果我导航到临时文件夹,控制台应用程序确实有它的图标;而手动运行它(在资源管理器中双击)也会给它正确的图标。
这可能是什么原因?
附加信息:ProcessStartInfo类没有提供任何关于图标的标志。我使用UseShellExecute=true和ErrorDialog=true运行进程。此外,Windows应用程序启动后最大化,但控制台应用程序被最小化(由ProcessStartInfo的WindowStyle成员指定)。最后,控制台应用程序的图标仅包含32x32x4bpp图标,而Windows应用程序具有多种不同的格式。
添加:我为下载的应用程序提供了适当的图标。仍然不行。:(
添加2:哦,对了,Windows 7 x64。
更新:刚刚尝试了更多实验。我创建了一个新的C++(非托管,而不是.NET)应用程序,里面只有“按任意键继续”的内容,并给它一个图标。图标在资源管理器中正常显示,当我从资源管理器运行它时,图标出现在窗口标题栏中。
然而,当我从Visual Studio启动应用程序(通过F5或Ctrl-F5);或者当我通过另一个.NET应用程序和Process.Start()运行应用程序时-图标不会出现。为什么?
这可能是什么原因?
附加信息:ProcessStartInfo类没有提供任何关于图标的标志。我使用UseShellExecute=true和ErrorDialog=true运行进程。此外,Windows应用程序启动后最大化,但控制台应用程序被最小化(由ProcessStartInfo的WindowStyle成员指定)。最后,控制台应用程序的图标仅包含32x32x4bpp图标,而Windows应用程序具有多种不同的格式。
添加:我为下载的应用程序提供了适当的图标。仍然不行。:(
添加2:哦,对了,Windows 7 x64。
更新:刚刚尝试了更多实验。我创建了一个新的C++(非托管,而不是.NET)应用程序,里面只有“按任意键继续”的内容,并给它一个图标。图标在资源管理器中正常显示,当我从资源管理器运行它时,图标出现在窗口标题栏中。
然而,当我从Visual Studio启动应用程序(通过F5或Ctrl-F5);或者当我通过另一个.NET应用程序和Process.Start()运行应用程序时-图标不会出现。为什么?
Start-process -FilePath "C:\path\to\my.exe"
,但是该应用程序在任务栏中没有应用程序图标。如果我通过双击运行my.exe,则图标会正确显示。上述解决方法对我有效:当我传递一个额外的-WorkingDirectory参数时,它按预期工作:Start-process -WorkingDirectory "C:\path\to\" -FilePath "C:\path\to\my.exe"
- Roganik