トップ 最新

ただのにっき

2007-03-11(日) [長年日記]

Vista時代の壁紙術

タイトルは「○○時代の××術」って書いてみたかっただけですすみませんすみません。Vistaなんて、ヨドバシのPC売り場でちょこっと触ったことがあるだけです。IT業界にいてそれもどうかと思うけど。

で、(ワイド液晶ディスプレイを持っているわけでもないのに)Yahoo! Widgetsを使っている関係で、画面の右端をちょっと空けているのである。残りの部分はPoderosaをほとんど全画面化して使っているので、この下の画面は目にすることがない。つまり、せっかく壁紙を設定していても、目に入るのは右端のほんの100ピクセル程度ということになる。

これはもったいない。

そこで、この領域を「サイドペーパー」を名づけ、この大きさにフィットする壁紙を設定してはどうかという話。

まず思いついた縦長の絵は、『ぴっぴら帳』を読んでいて気づいた「四コママンガのタイトル」。これをスキャナで取り込んでトリミング、設定してみた。『ぴっぴら帳』は7年も続いたから、季節感あふれる図柄には事欠かないし。

もっとも幅100ピクセルにすると縦がぜんぜん足らないので、ちょっとマヌケか。……というか、やってみたものの一気にオタクくさくなったのでこの案は却下。

次のアイデアは風車。ブレードをカットしてよければ、縦長の領域によく合う。これはいいですな。

しかし、やはり縦長といえばロケット。これはいいかもしんない(←アリアン好き)。どっちがオタクやねん、と言えばこっちかも知れないが。


ぴっぴら帳(ノート) (1) (ACTION COMICS)
こうの 史代
双葉社
¥131

ぴっぴら帳 (完結編) (Action comics)
こうの 史代
双葉社
¥420

Tags: wallpaper

「サイドペーパー」設定スクリプト: sitepaper.vbs

こないだ書いたディスプレイの解像度を知りたいという話は、この「サイドペーパー」を楽に設定するためのスクリプトが欲しかったからなのだ。

で、できたのはコレなんだけど:

'
' sidepaper.vbs: set wallpaper on right-bottom side.
' Copyright (C) 2007 by TADA Tadashi <sho@spc.gr.jp>.
' Distributed under GPL.
'
Function HiMetric2Pixel( himetric, logPixel )
   HiMetric2Pixel = CInt( (himetric * 567 * logPixel) / (1440 * 1000) )
End Function

Dim args
Dim picture
Dim shell
Dim wmi
Dim disps

Set shell = CreateObject( "Wscript.Shell" )
Set args = Wscript.Arguments
If args.Length < 1 Then
   shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperOriginX", "0", "REG_SZ"
   shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperOriginY", "0", "REG_SZ"
   Wscript.Echo( "Setting wallpaper offset to zero." )
   Wscript.Quit
End If
Set picture = LoadPicture( args( 0 ) )

shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperStyle", "0", "REG_SZ"
shell.RegWrite "HKCU\Control Panel\Desktop\TileWallpaper", "0", "REG_SZ"
shell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", args( 0 ), "REG_SZ"

Set wmi = GetObject( "winmgmts:\\.\root\cimv2" )
Set disps = wmi.ExecQuery( "Select * from Win32_DisplayConfiguration", , 48 )
For Each disp in disps
   width = HiMetric2Pixel( picture.Width, disp.LogPixels )
   height = HiMetric2Pixel( picture.Height, disp.LogPixels )
   offx = CStr( disp.PelsWidth - width )
   offy = CStr( disp.PelsHeight - height )
   shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperOriginX", offx, "REG_SZ"
   shell.RegWrite "HKCU\Control Panel\Desktop\WallpaperOriginY", offy, "REG_SZ"
   shell.Run "RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters",0,True
   Wscript.Quit
Next

これを「sidepaper.vbs」というファイルに保存し、その上に好きな画像ファイルをドラッグ&ドロップすればデスクトップの右下にフィットするように壁紙を設定してくれる……はずなんだけど、実は動かない。

レジストリ上の値はちゃんと設定されているはずで、何かの拍子に期待通りの表示になったりもするんだが、少なくともおれの環境では実行直後には壁紙が切り替わらない。

最近のWindowsではWallpaperOriginXが使えなくなったんだろうか(おれの知識はWindows 3.1時代のものである)と思ったが、XPで使っている記事もあるから間違ってはいなさそうである。うーん……。

Tags: vbs sidepaper