こんにちは。このウェブサイトを使用するのは初めてなので、質問の形式が間違っていないことを願っています。
とにかく、タイトルの通り、私も同じような問題を抱えています少し前に回答されたスレッドに答えはありましたが、テストのために実行しようとしたところ、Windows 8.1 を実行している私のコンピューターでは動作しませんでした。画像が配置されている場所へのパスを変更することで指示に従ったことは確かですが、動作させるには何を変更する必要があるのか、それともコードは完全に問題なく、おそらくどこかで間違えただけなのか疑問に思っています。
dim shell
Set shell = WScript.CreateObject("WScript.Shell")
wallpaper = "C:\path\to\wallpaper.jpg"
shell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", wallpaper
shell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True
私も試してみましたオリジナルコードしかし、システムの最後のコード行で指定されたファイルが見つからないというエラーが発生します。
どのような助けでも大歓迎です!
答え1
これは悪い回答なので使用しないでください。
このスクリプトは、画像を右クリックして「デスクトップの背景として設定」を押す操作をエミュレートします。スクリプトの使用方法は明確ですSetWallPaper "directory to picture", "filename of picture", "name context menu to run"
。
'File encoding should be in ANSI
SetWallPaper "C:\icons\", "Potato-icon.png", "Set as desktop &background"
Sub SetWallPaper(WallPaperFolder, WallpaperFile,VerbName)
dim objShell, objFolder, objFolderItem, objVerb, colVerbs
Set objShell = CreateObject("Shell.Application")
set objFolder=objShell.NameSpace(WallPaperFolder)
set objFolderItem=objFolder.ParseName(WallPaperFile)
set colVerbs=objFolderItem.Verbs
for each objVerb in colVerbs
'msgbox objVerb ,0, "Press CTRL+C for copy text" 'uncomment for debug names in contextmenu
if objVerb=VerbName then
'x=msgbox(objVerb ,0, "omg found")
objVerb.DoIt
'Without the sleep command the change never takes effect on Win7.
wscript.sleep(2000)
wscript.quit
end if
next
End Sub
Windows で画像を右クリックしたときに「デスクトップの背景として設定」という名前が異なる場合:
- 次の行のコメントを解除する必要があります(シングルクォーテーションを削除)。colVerbs内の各objVerbについて
- 次にスクリプトを実行し、あなたの言語の「デスクトップと背景として設定」という文字列を見つけて(次のメッセージでは ENTER を押します)、CTRL+C を押してメッセージを保存します。
- メモ帳を開き、CTRL+V を押すとメッセージが貼り付けられます。この名前をスクリプトにコピーします。
に基づくこれ
間違いがなければ、少なくとも Windows 7 では動作します。