C# 从C配置*.scr文件

C# 从C配置*.scr文件,c#,windows,configure,screensaver,C#,Windows,Configure,Screensaver,我正在C.Net中创建一个程序,其中一个功能允许用户从列表中选择一个屏幕保护程序,并对其进行预览或配置。在做了一些研究之后,我发现通过使用/c参数调用*.scr文件,将显示配置对话框 从命令行使用此参数在C:\Windows\System32>PhotoScreensaver.scr/C中运行良好,但从C调用此参数将始终导致屏幕保护程序简单显示,就好像忽略了此参数一样 我使用的代码如下: Process.Start(ScreensaverPath, "/c"); 其中ScreensaverPa

我正在C.Net中创建一个程序,其中一个功能允许用户从列表中选择一个屏幕保护程序,并对其进行预览或配置。在做了一些研究之后,我发现通过使用/c参数调用*.scr文件,将显示配置对话框

从命令行使用此参数在C:\Windows\System32>PhotoScreensaver.scr/C中运行良好,但从C调用此参数将始终导致屏幕保护程序简单显示,就好像忽略了此参数一样

我使用的代码如下:

Process.Start(ScreensaverPath, "/c");
其中ScreensaverPath包含指向并包含*.scr文件的路径

我也尝试过此代码,但无效:

Process.Start(ScreensaverPath + "/c");
任何帮助都将不胜感激


另外,我正在使用Windows 8 Pro,但我需要与XP和更新版本兼容的解决方案。

我建议您首先创建设置属性的实例,然后将该实例传递给Process.StartinstanceOfProcessStartInfo


我在使用Process.Start directly时遇到了类似的问题,这是解决这个问题的方法,我认为直接从C传递参数是行不通的。如果在Start | Run框中键入C:\windows\system32\sspipes.scr/cin,这也会直接进入屏幕保护程序,而不会打开配置屏幕

然而,我已经能够通过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个按钮的窗体。按钮1打开配置屏幕,按钮2运行屏幕保护程序。显然,你会删除硬编码等,所以请原谅错误的编码风格


您只需要创建一个名为scr.cmd的文本文件,其中包含%1/c,并将其保存到c:\temp

是否尝试了Process.StartScreensaverPath+/c;i、 有额外的空间吗?它很脆弱,不知道为什么。难看但这是可行的:Process.Startcmd.exe,/c:\\windows\\system32\\sstext3d.scr/c;