首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C#配置*.scr文件

从C#配置*.scr文件
EN

Stack Overflow用户
提问于 2012-10-26 06:29:45
回答 2查看 1.4K关注 0票数 3

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

在命令行中使用这个参数可以很好地工作("C:\Windows\System32>PhotoScreensaver.scr /c"),但是从C#调用它总是会导致屏幕保护程序被简单地显示出来,就好像这个参数被忽略了一样。

我使用的代码是这样的:

代码语言:javascript
复制
Process.Start(ScreensaverPath, "/c");

其中,ScreensaverPath包含指向(包括) *.scr文件的路径。

我也试过这段代码,但没有用:

代码语言:javascript
复制
Process.Start(ScreensaverPath + "/c");

任何帮助都将不胜感激。

附注:我使用的是Windows 8专业版,但我需要的解决方案是与XP和更新版本兼容。

EN

回答 2

Stack Overflow用户

发布于 2012-10-26 06:42:06

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

我直接使用Process.Start遇到了类似的问题,以下是解决方案

票数 1
EN

Stack Overflow用户

发布于 2012-10-26 07:20:35

我不认为在C#中直接传递参数是可行的。如果您在Start|Run框中键入c:\windows\system32\sspipes.scr /c,也会直接进入屏幕保护程序,而不会弹出配置屏幕。

不过,我已经能够通过cmd文件做到这一点,所以一个解决方案(尽管不是很完美)是在某个地方创建一个只有一行%1 /c的cmd文件

然后,您可以将屏幕保护程序的路径和文件名传递给cmd文件,这将打开配置屏幕

下面是一些又快又脏的VB代码

代码语言:javascript
复制
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

这是一个有两个按钮的表单。Button1调出配置屏幕,按钮2运行屏幕保护程序。显然,你会删除硬编码等,所以请原谅糟糕的编码风格。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13078311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档