0

私がすでに試したがうまくいかなかった解決策は次のとおりです。

1)iniキーを$ WINDIR\system.iniに追加します

[boot]
SCRNSAVE.EXE $SYSDIR\savername.scr

2)user32.dll :: SystemParametersInfo(17、1、0、2)を呼び出します

上記はXPでは機能しますが、2000では機能しません

rundll32.exe desk.cpl,InstallScreenSaver <path to screensaver>

この種の機能は2000年に機能しますが、構成ダイアログがポップアップ表示され、ダイアログに戻ると設定が失われます。

すべてのプラットフォームで機能し、構成画面をポップアップせず、構成ダイアログを開いたときに設定を保持し、サードパーティのソフトウェアを必要としないソリューションまたはソリューションのセットを探します。

4

1 に答える 1

0

ここで見つかったINIメソッドとレジストリメソッドを組み合わせて機能したのは、スクリーンセーバーをプログラムで変更するにはどうすればよいですか?。NSISコードは次のとおりです。

!include WinVer.nsh

; Install the executable
${If} ${AtMostWinXP}
  SetOutPath "$SYSDIR"
  File screen.scr
${EndIf}
SetOutPath "$INSTDIR"
File screen.scr

; Set screensaver and make it active
${If} ${AtMostWinXP}
  WriteINIStr "$WINDIR\system.ini" "boot" "SCRNSAVE.EXE" "$SYSDIR\screen.scr"

${Else}
  WriteRegStr HKCU "Control Panel\desktop" "SCRNSAVE.EXE" "$INSTDIR\screen.scr"
  WriteRegStr HKCU "Control Panel\desktop" "ScreenSaveActive" "1"
${EndIf}

; Notify system of the change
System::Call 'user32.dll::SystemParametersInfo(17, 1, 0, 2)'

スクリーンセーバーを\windows\system32とパッケージインストールディレクトリの両方にインストールしていることに注意してください。何らかの理由で、system32へのインストールはWindows2000では機能しませんでした。

于 2012-10-25T00:15:41.067 に答える