我正在C#.Net中创build一个程序,其中一个function允许用户从列表中select一个屏幕保护程序,并进行预览或configuration。 在做了一些研究之后,我发现通过用“/ c”参数调用* .scr文件将显示configuration对话框。
从命令行使用这个参数可以正常工作(“C:\ Windows \ System32> PhotoScreensaver.scr / c”),但是从C#中调用这个参数总是会导致屏幕保护程序被简单地显示,就像刚刚被忽略的参数一样。
我使用的代码是这样的:
Process.Start(ScreensaverPath, "/c");
其中ScreensaverPath包含(和包括)* .scr文件的path。
我也试过这个代码,但无济于事:
Process.Start(ScreensaverPath + "/c");
任何帮助将不胜感激。
PS我正在使用Windows 8 Pro,但我需要解决scheme与XP和更新的兼容。
我建议你先创建ProcessStartInfo的实例,设置你的属性,然后将实例传递给Process.Start(instanceOfProcessStartInfo)
我有直接使用Process.Start类似的问题,这是它的解决方案
我不认为直接传递参数将从C#工作。 如果您在开始|运行框中键入c:\windows\system32\sspipes.scr /c
,这也将直接进入屏幕保护程序,不会显示配置屏幕。
我已经能够通过一个cmd文件来做到这一点,所以一个解决方案(虽然不完美)是创建一个cmd文件,其中有一行%1 /c
然后,您可以将屏幕保护程序的路径和文件名传递到cmd文件,这将调出配置屏幕
一些快速和肮脏的VB代码将说明
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim path As String = "C:\temp\scr.cmd" Dim args As String = "C:\WINDOWS\system32\sspipes.scr" Dim psi As New ProcessStartInfo psi.Arguments = args psi.FileName = path Process.Start(psi) End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim app As String = "C:\WINDOWS\system32\sspipes.scr" Process.Start(app) End Sub End Class
这是一个2个按钮的形式。 Button1调出配置屏幕,按钮2运行屏幕保护程序。 显然你会删除硬编码等,所以请原谅糟糕的编码风格。
您只需要创建一个名为scr.cmd的文本文件,其中包含%1 /c
并将其保存到c:\temp