2012-10-25 28 views
3

我在C#.Net中創建了一個程序,其中一個功能允許用戶從列表中選擇一個屏幕保護程序並進行預覽或配置。在做了一些研究之後,我發現通過使用「/ c」參數調用* .scr文件將顯示配置對話框。配置C#中的* .scr文件

從命令行使用這個參數可以正常工作(「C:\ Windows \ System32> PhotoScreensaver.scr/c」),但是從C#中調用它總是會導致屏幕保護程序被簡單地顯示出來,忽略。

我使用的代碼是這樣的:

Process.Start(ScreensaverPath, "/c"); 

其中ScreensaverPath包含路徑(包括)的* .scr的文件。

我自己也嘗試這個代碼,但無濟於事:

Process.Start(ScreensaverPath + "/c"); 

任何幫助將不勝感激。

P.S.我正在使用Windows 8 Pro,但我需要解決方案與XP和更新的兼容。

+0

你嘗試'的Process.Start(ScreensaverPath +「/ C」);'即一個額外的空間? –

+0

這是片狀,不知道爲什麼。醜,但這個工程:Process.Start(「cmd.exe」,「/ c c:\\ windows \\ system32 \\ sstext3d.scr/c」); –

回答

1

我建議你先創建實例ProcessStartInfo設置你的屬性,然後將實例傳遞給的Process.Start(instanceOfProcessStartInfo)

我不得不直接使用的Process.Start類似的問題,這是解決它

1

我不認爲通過參數直接將從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調出配置屏幕,Button 2運行屏幕保護程序。顯然你會刪除硬編碼等,所以請原諒糟糕的編碼風格。

你只需要創建一個名爲scr.cmd一個文本文件與它%1 /c並將其保存到c:\temp